栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

儿童python教程72:Python dict字典方法完全攻略(全)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

儿童python教程72:Python dict字典方法完全攻略(全)

我们知道,字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类包含哪些方法。在交互式解释器中输入 dir(dict) 命令,将看到如下输出结果:

>>> dir(dict)
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

这些方法中,clear()、fromkeys()、get() 方法的功能和用法已经在前面章节中讲过,这里不再重复介绍。下面给大家一一介绍另外的这些方法。 Python keys()、values() 和 items()方法 这 3 个方法之所以放在一起介绍,是因为它们都用来获取字典中的特定数据。keys() 方法用于返回字典中的所有键;values() 方法用于返回字典中所有键对应的值;items() 用于返回字典中所有的键值对。

例如:

a = {'数学': 95, '语文': 89, '英语': 90}

print(a.keys())

print(a.values())

print(a.items())
运行结果为:

dict_keys(['数学', '语文', '英语'])
dict_values([95, 89, 90])
dict_items([('数学', 95), ('语文', 89), ('英语', 90)])


注意,在 Python 2.x 中,这三个方法的返回值是列表类型。但在 Python 3 中,并不是我们常见的列表和元组类型,因为 Python 3不希望用户直接操作这几个方法的返回值。如果想使用返回的数据,有以下 2 种方法:
  1. 使用 list() 函数,将它们返回的数据转换成列表,例如:
    
    a = {'数学': 95, '语文': 89, '英语': 90}
    
    b = list(a.keys())
    
    print(b)
    运行结果为:

    ['数学', '语文', '英语']

  2. 也可以利用多重赋值的技巧,利用循环结构将键或值分别赋给不同的变量,比如说:
    
    a = {'数学': 95, '语文': 89, '英语': 90}
    
    for k in a.keys():
    
        print(k,end=' ')
    
    print("n---------------")
    
    for v in a.values():
    
        print(v,end=' ')
    
    print("n---------------")
    
    for k,v in a.items():
    
        print("key:",k," value:",v)
    运行结果为:

    数学 语文 英语
    ---------------
    95 89 90
    ---------------
    key: 数学  value: 95
    key: 语文  value: 89
    key: 英语  value: 90

    由于目前尚未学习 for 循环,初学者可先跳过此种方法,等学会 for 循环后再回过头来学习。
Python copy()方法 copy() 方法用于返回一个具有相同键值对的新字典,例如:

a = {'one': 1, 'two': 2, 'three': [1,2,3]}

b = a.copy()

print(b)
运行结果为:

{'one': 1, 'two': 2, 'three': [1, 2, 3]}

可以看到,通过 copy() 方法,就可以将字典 a 的数据拷贝给字典 b。

注意,copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。拿拷贝字典 a 为例,copy() 方法只会对**表层的键值对进行深拷贝,也就是说,它会再申请一块内存用来存放 {'one': 1, 'two': 2, 'three': []};而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,b 中的 [1,2,3] 的值不是自己独有,而是和 a 共有。

例如:

a = {'one': 1, 'two': 2, 'three': [1,2,3]}

b = a.copy()

#向 a 中添加新键值对,由于b已经提前将 a 所有键值对都深拷贝过来,因此 a 添加新键值对,不会影响 b。

a['four']=100

print(a)

print(b)

#由于 b 和 a 共享[1,2,3](浅拷贝),因此移除 a 中列表中的元素,也会影响 b。

a['three'].remove(1)

print(a)

print(b)
运行结果为:

{'one': 1, 'two': 2, 'three': [1, 2, 3], 'four': 100}
{'one': 1, 'two': 2, 'three': [1, 2, 3]}
{'one': 1, 'two': 2, 'three': [2, 3], 'four': 100}
{'one': 1, 'two': 2, 'three': [2, 3]}

从运行结果不难看出,对 a 增加新键值对,b 不变;而修改 a 某键值对中列表内的元素,b也会相应改变。 Python update()方法 update() 方法可使用一个字典所包含的键值对来更新己有的字典。

在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。

例如:

a = {'one': 1, 'two': 2, 'three': 3}

a.update({'one':4.5, 'four': 9.3})

print(a)
运行结果为:

{'one': 4.5, 'two': 2, 'three': 3, 'four': 9.3}

从上面的执行过程可以看出,由于被更新的 dict 中已包含 key 为“one”的键值对,因此更新时该键值对的 value 将被改写;但如果被更新的 dict 中不包含 key 为“four”的键值对,那么更新时就会为原字典增加一个键值对。 Python pop方法 pop() 方法用于获取指定 key 对应的 value,并删除这个键值对。

如下方法示范了 pop() 方法的用法:

a = {'one': 1, 'two': 2, 'three': 3}

print(a.pop('one'))

print(a)
运行结果为:

1
{'two': 2, 'three': 3}

此程序中,第 2 行代码将会获取“one”对应的值 1,并删除该键值对。 Python popitem()方法 popitem() 方法用于随机弹出字典中的一个键值对。

注意,此处的随机其实是假的,它和 list.pop() 方法一样,也是弹出字典中**后一个键值对。但由于字典存储键值对的顺序是不可知的,因此 popitem() 方法总是弹出底层存储的**后一个键值对。

如下代码示范了 popitem() 方法的用法:

a = {'one': 1, 'two': 2, 'three': 3}

print(a)

# 弹出字典底层存储的**后一个键值对

print(a.popitem())

print(a)
运行结果为:

{'one': 1, 'two': 2, 'three': 3}
('three', 3)
{'one': 1, 'two': 2}

实际上,由于 popitem 弹出的是一个元组,因此我们也可以通过序列解包的方式,用两个变量分别接收 key 和 value。

例如如下代码:

a = {'one': 1, 'two': 2, 'three': 3}

# 将弹出项的key赋值给k、value赋值给v

k, v = a.popitem()

print(k, v)
运行结果为:

three 3

Python setdefault()方法 setdefault() 方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value。

也就是说,setdefault() 方法总能返回指定 key 对应的 value;如果该键值对存在,则直接返回该 key 对应的 value;如果该键值对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。

如下代码示范了 setdefault() 方法的用法:

a = {'one': 1, 'two': 2, 'three': 3}

# 设置默认值,该key在dict中不存在,新增键值对

print(a.setdefault('four', 9.2))

print(a)

# 设置默认值,该key在dict中存在,不会修改dict内容

print(a.setdefault('one', 3.4))

print(a)
运行结果为:

9.2
{'one': 1, 'two': 2, 'three': 3, 'four': 9.2}
1
{'one': 1, 'two': 2, 'three': 3, 'four': 9.2}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/806028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号