字典方法

#像其他内建类型一样,字典也有方法,这些方法非常有用,不过可能不像使用列表或字符串一样频繁使用。
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

原文地址:https://www.cnblogs.com/DLHe/p/7737523.html