字典的操作
Posted welljoy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典的操作相关的知识,希望对你有一定的参考价值。
字典
要么是已经有了字典,我们调用里面的键值对
要么是空字典,我们根据实际情况放入键值对
#增加
dict1 = {}# 创建空字典后逐个添加键值对,非空字典也同样添加,如果遇到键相同的话,就会覆盖掉原先的键值对
dict1[‘color‘] = ‘red‘
dict1[‘points‘] = 5
dict1[‘x_position‘] = 25
dict1[‘y_position‘] = 0
#删除
del dict1[‘color‘] #直接删除,该键值对永远消失
pop(k,d = None) #删除指定键值对,d参数可以默认不填,如果需要删除的键值对不存在,返回None或者d的值
popitem() #奇葩的函数,随机删除一个键值对,如果字典为空会报错
KeyError: ‘popitem(): dictionary is empty‘
print(dict1.pop(‘color‘,‘yellow‘)) #返回‘red‘,此时‘color‘已被删除
print(dict1.popitem()) #随机删除一个键值对,你不知道删的是哪个
print(dict1) #删的只剩2个键值对了
#修改
直接重新赋值就是修改
dict1[‘color‘] = ‘green‘
#查询定位
dict1 = {‘points‘: 5, ‘color‘: ‘red‘, ‘y_position‘: 25, ‘x_position‘: 25}
print(dict1.items())
items()返回一个键值对列表
返回的是列表,dict_items([(‘x_position‘, 25), (‘color‘, ‘red‘), (‘y_position‘, 0), (‘points‘, 5)])
keys()返回一个列表,包含字典中的所有键
print(dict1.keys())
dict_keys([‘points‘, ‘x_position‘, ‘color‘, ‘y_position‘])
values()返回一个列表,包含字典中的所有值
print(dict1.values())
dict_values([0, ‘red‘, 25, 5])
get(key,beiyong)取得字典中的键值,如果无,则返回备用值
print(dict1.get(‘points‘)) #返回5
print(dict1.get(‘pointss‘)) #返回None
print(dict1.get(‘pointss‘,6)) #返回6
setdefault(key,default)检查key,如果字典中有了,返回该值,如果没有,增加这个key-default的键值对到字典
print(dict1.setdefault(‘pointss‘)) #返回None
print (dict1) #在字典里面增加了键值对‘pointss‘: None
print(dict1.setdefault(‘pointss‘,6)) #返回6
print (dict1) #在字典里面增加了键值对‘pointss‘: 6
print(dict1.setdefault(‘points‘,6)) #返回5
print (dict1) #在字典里面不再增加键值对
print (len(dict1)) #打印字典长度,4
print (dict1[‘color‘]) #打印具体键值 ‘red‘
#排序#去重
字典不排序,所以没有index
字典的键值对的键名称不能重复,所以count进行统计重复次数不适用
由于提取的值可能有重复,所以可以用set()函数进行去重
set(dict1.values())
#注意返回的是集合{25, 5, ‘red‘}
belist = list(dict1.values())
#values函数返回的是字典,需要变成列表属性后才能计数
print (belist.count(25)) #返回2
#复制
dict2 = dict1.copy() #列表和字典可以用copy函数,字符串和元组不行
#拼接和插入
update()把两个字典合并成一个
dict1.update(dict2) 将字典dict2更新到dict1中,当dict1中有key与dict2中一致,用dict2的覆盖掉,如果没有一致的,就把dict2的键值对添加进dict1
fromkeys()根据括号内的键值创建新的字典
info = {‘a‘:1,‘b‘:‘c‘,‘d‘:2}
print(info.fromkeys(‘aaron‘,[2,3,4])) #info在这里就是打酱油的,为了能用字典函数fromkeys而已
print(info.fromkeys([2,3,4],‘aaron‘))
print(info.fromkeys([2,3,4],[‘f‘,‘g‘,‘h‘]))
print(info)
{‘a‘: [2, 3, 4], ‘r‘: [2, 3, 4], ‘o‘: [2, 3, 4], ‘n‘: [2, 3, 4]} //aaron被拆分了,两个a是一样的
{2: ‘aaron‘, 3: ‘aaron‘, 4: ‘aaron‘} //每个键赋值aaron
{2: [‘f‘, ‘g‘, ‘h‘], 3: [‘f‘, ‘g‘, ‘h‘], 4: [‘f‘, ‘g‘, ‘h‘]} //后面是列表也一样赋值
{‘b‘: ‘c‘, ‘a‘: 1, ‘d‘: 2} //函数是生成新的列表,不影响原列表
#指定切片或分离
字典内的键值对是成对存储,键与键之间不进行排序,是乱序存储,连续打印同一个字典,展示出来的显示效果都是不一样的,所以没有索引值,无法切片或分离
以上是关于字典的操作的主要内容,如果未能解决你的问题,请参考以下文章