字典方法

Posted 爱你无目的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典方法相关的知识,希望对你有一定的参考价值。

#像其他内建类型一样,字典也有方法,这些方法非常有用,不过可能不像使用列表或字符串一样频繁使用。
1、clear()方法
 1 #clear()方法用于删除字典内的所有项。
 2 #clear()方法的语法如下:
 3 >>>dict.clear()
 4 #此语法中dict代表指定字典,该方法不需要参数。该函数是一个原地操作(类似于list.sort)函数,没有任何返回值(返回值为None)。
 5 #示例如下:
 6 >>> student={袁威:666,肖涛:222,陈安:111,小明:333}
 7 >>> print(字典中元素的个数为:%d个%len(student))
 8 字典中元素的个数为:4个
 9 >>> student.clear()
10 >>> print(字典中元素的个数为:%d个:%len(student))
11 字典中元素的个数为:0个:
12 #由输出结果可知,字典调用clear方法后整个字典内所有项都被删除。
13 #再看下面两个示例:
14 示例1:
15 >>> x={}
16 >>> y=x
17 >>> x[key]=value
18 >>> y
19 {key: value}
20 >>> x={}
21 >>> y
22 {key: value}
23 示例2:
24 >>> x={}
25 >>> y=x
26 >>> x[key]=value
27 >>> y
28 {key: value}
29 >>> x.clear()
30 >>> y
31 {}
32 #由两个示例中,x和y最初对应同一个字典。示例1中,通过将x关联到一个新的空字典对他重新赋值,这对y没有任何影响,还关联到原先的字典。若想清空原始字典中所有元素,则必须使用clear方法,使用clear后,y的值也被清空了。
2、copy()方法
 1 #copy()方法返回一个具有相同键/值对的新字典。这个方法是浅复制(shallow copy),因为值本身是相同的,而不是副本。
 2 #copy()方法的语法如下:
 3 >>>dict.copy()
 4 #此语法中dict字典代表指定字典,该方法不需要参数。返回结果为一个字典的浅复制。
 5 #该方法示例如下:
 6 >>> student={袁威:123,肖涛:456,陈安:789,小智:666}
 7 >>> st=student.copy()
 8 >>> print(复制后得到的st为:,st)
 9 复制后得到的st为: {袁威: 123, 肖涛: 456, 陈安: 789, 小智: 666}
10 #由输出结果看到,使用copy方法可以将字典复制给另一个变量。
11 #我们可以通过下面的示例看看什么是浅复制。
12 >>> student={小智:1002,info:[小张,1006,man]}
13 >>> st=student.copy()
14 >>> st[小智]=1005
15 >>> print(更改copy后的st为:,st)
16 更改copy后的st为: {小智: 1005, info: [小张, 1006, man]}
17 >>> print(原字符串为:,student)
18 原字符串为: {小智: 1002, info: [小张, 1006, man]}
19 >>> st[info].remove(man)
20 >>> print(删除后的st为:,st)
21 删除后的st为: {小智: 1005, info: [小张, 1006]}
22 >>> print(删除后的student为:,student)
23 删除后的student为: {小智: 1002, info: [小张, 1006]}
24 #由输出结果看到,替换副本的值时原始字典不受影响。如果修改了某个值(原地修改,不是替换),原始字段就会改变,因为同样的值也在原字典中。以这种方式进行复制就是浅复制,而使用深复制(deep copy)可以避免这个问题。
3、fromkeys()方法
 1 #fromkeys()方法用于创建一个新字典,以序列seq中的元素做字典的键,value为字典所有键对应的初始值。
 2 #fromkeys()方法语法如下:
 3 >>>dict.fromkeys(seq[,value])
 4 #此语法中dict代表指定字典;seq代表字典键值列表;value代表可选参数,设置键序列(seq)的值。该方法返回结果为列表。
 5 #示例如下:
 6 >>> target=(姓名,性别,爱好)
 7 >>> info=dict.fromkeys(target)
 8 >>> print(info字典信息为:,info)
 9 info字典信息为: {姓名: None, 性别: None, 爱好: None}
10 >>> info=dict.fromkeys(target,10)
11 >>> print(新的info字典信息为:,info)
12 新的info字典信息为: {姓名: 10, 性别: 10, 爱好: 10}
13 #由输出结果看到,fromkeys方法使用给定的键建立新字典,每个键默认对应的值为None。
4、get()方法
 1 #get()方法返回指定键的值,如果值不在字典中,就会返回默认值。
 2 #get()方法语法如下:
 3 >>>dict.get(key,default=None)
 4 #此语法中dict代表指定字典,key代表字典中要查找的键,default代表指定键的值不存在时就返回默认值。该方法返回结果为指定键的值,如果值不在字典中,就返回默认值None。
 5 #示例如下:
 6 >>> student={袁威:123,邬玲苑:456}
 7 >>> print(袁威的学号为:%s%student.get(袁威))
 8 袁威的学号为:123
 9 #由输出结果看到,get方法使用比较简单,再如示例:
10 >>> st={}
11 >>> print(st[name])
12 Traceback (most recent call last):
13   File "<pyshell#8>", line 1, in <module>
14     print(st[name])
15 KeyError: name
16 >>> print(st.get(name))
17 None
18 >>> print(name的值为:%s%st.get(name))
19 name的值为:None
20 #由输出结果看到,其他方法试图访问字典中不存在的项时会出错,而使用get方法就不会。使用get方法访问一个不存在的键时,返回None。这里还可以自定义默认值,用于替换None,示例:
21 >>> st={}
22 >>> print(name的值为:%s%st.get(name,袁威))
23 Traceback (most recent call last):
24   File "<pyshell#12>", line 1, in <module>
25     print(name的值为:%s%st.get(name,袁威))
26 NameError: name 袁威 is not defined
27 >>> print(name的值为:%s%st.get(name,袁威))
28 name的值为:袁威
29 #由输出结果看到,输出结果中用‘袁威’替代了None。
5、key in dict方法
 1 #Python字典in操作符用于判断键是否存在于字典中,如果键在字典dict中就返回True,否则就返回False。
 2 #该方法语法如下:
 3 >>>key in dict
 4 #此语法中dict代表指定字典,key代表要在字典中查找的键。如果键在字典里就返回True,否则就返回False。示例如下:
 5 >>> student={袁威:123,邬玲苑:456}
 6 >>> print(袁威在字典里:,袁威in student)
 7 袁威在字典里: True
 8 >>> print(黄金萍在字典里:,黄金萍in student)
 9 黄金萍在字典里: False
10 #由输出结果看到,已返回对应的True和False。
11 #该方法是Python3中的方法,在Python2中有一个相同功能的方法--has_key方法。
6、items()方法
 1 #items()方法以列表返回可遍历的(键,值)元组数值。
 2 #items()方法语法如下:
 3 >>>dict.items()
 4 #此语法中dict代表指定字典,该方法不需要参数,返回结果为可遍历的(键/值)元组数值。示例如下:
 5 >>> 铿锵工作室={袁威:789,邬玲苑:456}
 6 >>> print(调用items方法的结果为:%s%铿锵工作室.items())
 7 调用items方法的结果为:dict_items([(袁威, 789), (邬玲苑, 456)])
 8 >>> print(调用items方法的结果为:,铿锵工作室.items())
 9 调用items方法的结果为: dict_items([(袁威, 789), (邬玲苑, 456)])
10 #由输出结果看到,返回结果为一个元组数值。
11 #在Python2中提供了一个iteritems方法,该方法和items方法的作用大致相同,但是iteritems方法返回的是一个迭代器对象,而不是列表。
7、keys()方法
1 #keys()方法以列表返回一个字典所有键。
2 #keys()方法语法如下:
3 >>>dict.keys()
4 #此语法中dict代表指定字典,该方法不需要参数。返回结果为一个字典所有键。示例如下:
5 >>> 铿锵工作室={肖涛:123,袁威:456,邬玲苑:789}
6 >>> print(字典铿锵工作室所有键为:%s%铿锵工作室.keys())
7 字典铿锵工作室所有键为:dict_keys([肖涛, 袁威, 邬玲苑])
8 #由输出结果看到,返回的是一个元组数值,数组包含了字典所有键。
8、setdefault()方法
 1 #setdefalut()方法和get()方法类似,用于获得与给定键相关联的值。如果键不存在于字典中,就会添加键并将值设为默认值。
 2 #setdefault()方法语法如下:
 3 >>>dict.setdefault(key,default=None)
 4 #此语法中dict代表指定字典,key代表查找的键值,default代表键不存在时设置的默认键值,该方法没有任何返回值。示例如下:
 5 >>> 铿锵工作室={肖涛:123,袁威:456,邬玲苑:789}
 6 >>> print(字典铿锵工作室所有键为:%s%铿锵工作室.keys())
 7 字典铿锵工作室所有键为:dict_keys([肖涛, 袁威, 邬玲苑])
 8 >>> 铿锵工作室={袁威:123,邬玲苑:456}
 9 >>> print(肖涛的键值为:%s%铿锵工作室.setdefault(肖涛))
10 肖涛的键值为:None
11 >>> print(邬玲苑的键值为:%s%铿锵工作室.setdefault(邬玲苑))
12 邬玲苑的键值为:456
13 >>> print(铿锵工作室的新值为:%s%铿锵工作室)
14 铿锵工作室的新值为:{袁威: 123, 邬玲苑: 456, 肖涛: None}
15 #由输出结果看到,当键不存在时,setdefault方法返回默认值并更新字典;如果存在,就返回与其对应的值,不改变字典。和get一样,默认值可以选择,如果不设定就使用None,如果设定就使用设定的值,例如:
16 >>> 铿锵工作室={袁威:123,邬玲苑:456}
17 >>> print(小强的键值为:%s%铿锵工作室.setdefault(小强))
18 小强的键值为:None
19 >>> print(小张的键值为:%s%铿锵工作室.setdefault(小张,1006))
20 小张的键值为:1006
21 >>> print(铿锵工作室字典新值为:%s%铿锵工作室)
22 铿锵工作室字典新值为:{袁威: 123, 邬玲苑: 456, 小强: None, 小张: 1006}
23 #由输出结果看到,小强没有设置值,使用的是默认值,输出键值为None;小张设置的默认值是1006,输出键值为1006.
9、update()方法
 1 #update()方法用于把字典dict2的键/值对更新到dict里
 2 #update()方法语法如下
 3 >>>dict.update(dict2)
 4 #此语法中dict代表指定字典,dict2代表添加到指定字典dict里的字典,该方法没有任何返回值。
 5 #示例如下:
 6 >>> student1={小明:123,小智:456}
 7 >>> student2={小强:789}
 8 >>> print(原字典为:,student)
 9 原字典为: {袁威: 123, 邬玲苑: 456}
10 >>> student.update(student2)
11 >>> print(新字典为:%s%student)
12 新字典为:{袁威: 123, 邬玲苑: 456, 小强: 789}
13 >>> student3={小强:1005}
14 >>> student.update(student3)   #相同项覆盖
15 >>> print(新字典为:%s%student)
16 新字典为:{袁威: 123, 邬玲苑: 456, 小强: 1005}
17 #由输出结果看到,提供的字典中的项被添加带旧字典中,如果有相同的键就会被覆盖。
10、values()方法
 1 #values()方法以列表形式返回字典中所有值。与返回键的列表不同,返回的列表中可以包含重复的元素。
 2 #values()方法语法如下:
 3 >>>dict.values()
 4 #此语法中dict代表指定字典,该方法不需要参数,返回结果为字典中的所有值。示例如下:
 5 >>> 铿锵工作室={小明:1001,小智:1002,小强:1001}
 6 >>> print(铿锵工作室所有值为:%s%list(student.values()))
 7 铿锵工作室所有值为:[1001, 1002, 1003]
 8 >>> print(铿锵工作室所有值为:%s%student.values())
 9 铿锵工作室所有值为:dict_values([1001, 1002, 1003])
10 #由输出结果看到,返回列表中包含重复的元素

end

以上是关于字典方法的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第19篇):合并多个字典

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

Android课程---Android Studio使用小技巧:提取方法代码片段