字典方法
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
以上是关于字典方法的主要内容,如果未能解决你的问题,请参考以下文章