目录
①直接用赋值覆盖的方法,模板是:字典名[key]=new_vlaue
③调用pop函数删除字典给定键 key 所对应的值,pop函数返回值为被删除的值。
④调用popitem函数删除最后一个字键对,popitem删除最后一个字键对并返回该字键对。
1.dict的定义及构建
(1)定义
字典由0个以上键值组成在花括号 {} 中,意思是可为空值。每个键值由字键 key和值value组成,两者用冒号 : 连接,每个键值对之间则用逗号进行分割。
语法:{key1:value1,key2:value2,...,keyn:valuen}
(2)构建
#字典
#构建字典
#①定义空值字典
dict1 = {} #字典1为空值
dict1 #查看dict1
#②定义目标字典2
dict2 = {'a':1,'b':2,'c':3}
dict2
#③定义目标字典3
dict3 = {'a':2,'b':2,'c':3}
dict3
注意:字典的字键key是唯一的,而值value可不唯一。字键如果重复最后的一个键值对会替换前面的。
2.字典的查询、修改、删除操作
(1)查询
①查询某字键的值可直接用字典名['字键']
#查询字典2的b的值
dict2['b']
②用get函数调用查询
#查询dict2 b字键的值
dict2.get('b')
#查询dict3 c字键的值
dict3.get('c')
③调用vlaues函数查询所有字键的值
dict3.values()
④调用keys函数可以查询所有key字键名
dict2.keys()
⑤调用items函数查询每个字键和值用元组形式()呈现并用逗号隔开,每个键值之间用逗号隔开并储存在元组中用()括号。即返回结果呈现形式为:((key1,value1),...,(keyn,valuen))
dict3.items()
(2)修改
①直接用赋值覆盖的方法,模板是:字典名[key]=new_vlaue
例: 将dict2的b字键名的值从2改为3。
dict2['b'] = 3 #修改值
dict2 #查看dict2的字典值 输出结果为:{'a': 1, 'b': 3, 'c': 3}
#可以看出b字键的值已经变为3
②调用update函数插入新的值。
#①
dict2 = {'a': 1, 'b': 3, 'c': 3}
dict3 = {'a': 2, 'b': 2, 'c': 3}
#将dict3新增到dict2中
dict2.update(dict3)
dict2 #查看update之后的dict2信息。
#②在以上更新的dict2的基础上
dict4 = {'d':4,'e':5} #自定义dict4
dict2.update(dict4) #将dict4插入到dict2中
dict2 #查看dict2
运行结果如下图所示
说明:字键如果重复最后的一个键值对会替换前面的。因为代码dict2.update(dict3)按照逻辑是先得到的结果是{'a': 1, 'b': 3, 'c': 3,'a': 2, 'b': 2, 'c': 3},但是由于重复会替代前面的值,所以得到的值是{'a': 2, 'b': 2, 'c': 3}。
(3)删除
①用del删除
#目前dict2、dict3、dict4的值为
dict2 = {'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dict3 = {'a':2,'b':2,'c':3}
dict4 = {'d':4,'e':5}
①用del删除整个字典
del dict3 #删掉了整个dict3
②用del删除字典某个字键对
del dict2['e']
dict2 #查看dict2
说明:删除整个字典则无dict3这个字典,用dict3查看时则报错显示:NameError: name 'dict3' is not defined。
②调用clear函数清除字典所有条目
#清除dict4的所有值只剩下空值
dict4.clear()
#查看dict4的信息
dict4 #结果为{}
③调用pop函数删除字典给定键 key 所对应的值,pop函数返回值为被删除的值。
#目前dict2的值为
dict2 = {'a': 2, 'b': 2, 'c': 3, 'd': 4}
#删掉'd'字键对
dict2.pop('d')
#查看dict2
dict2
④调用popitem函数删除最后一个字键对,popitem删除最后一个字键对并返回该字键对。
#dict2的值为
dict2 = {'a': 2, 'b': 2, 'c': 3}
#删掉最后一个字键对
dict2.popitem()
#查看dict2
dict2
3.字典的cmp函数在3.x版本已停用
(1)cmp(dict1, dict2)本用来对比,相同则返回为0,值大于则返回为1,值小于则返回为-1。但是现用3.x版本调用cmp函数则报错:NameError: name 'cmp' is not defined。
现需要对比可调用operator模块的eq方法则可比较。若相同则返回为True,否则返回为False。