6. 字典
字典是什么
字典(dict) 是一种key-value
键值对的数据的集合,它是可变的、无序的、key去重的。
字典的定义(初始化)
#空字典
d1 = dict()
d2 = {}
#非空字典
d3 = {'a':1}
d4 = {'a':1, 1:1, 2:None, 3:'abc', 4:[], (5,):56}
d5 = dict(a=1,b=2,c="abc")
#dict(mapping, **kwarg)
d6 = dict(d5, d=200, e=300)
#dict(iterable, **kwarg) 二元解构的可迭代对象
d7 = dict([(1,100), (2,'abc')], d=200, e=300))
#dict.fromkeys(iterable,value)
d8 = dict.fromkeys(range(5))
d9 = dict.fromkeys("abcdefg", 0)
字典的key与hash
key的要求与set一致,set可以看作简化版dict。
只有可hash的元素才可以作为key,可以用hash()
测试。
字典的增删查改
通过key查找
d9[1]
通过get查找
d9.get(1,100)
找不到返回缺省值,默认返回None
,如果有定义缺省值则返回缺省值。
通过setdefault设置
d9.setdefault("h",100)
如果找到则不设置缺省值,找不到添加到词典,默认使用None
,如果有定义缺省值则使用缺省值。
通过key赋值
d[key] = value
将key对应的值修改为value
key不存在则添加
通过update更新
dict.update(other)
返回None
key不存在就添加,存在的话就覆盖现有的值,就地修改。
pop操作
dict.pop(key,[default])
key存在:移除并返回指定键值对
如果定义了default:key不存在,返回default。
如果未定义default:key不存在返回异常。
popitem操作
dict.popitem()
随机移除并返回任意键值对,dict为空时返回异常。
clear操作
dict.clear()
清空字典。
遍历操作
for k in d2:
print(k)
for k in d2.keys():
print(k)
for v in d2.values():
print(v)
for item in d2.items():
print(item)
for item in d2.items():
print(item[0],item[1])
for k,v in d2.items():
print(k,v)
for k,_ in d2.items():
print(k)
字典遍历的总结
Python3中,keys
values
items
返回的都是一个类似生成器的可迭代对象,不会把函数的返回结果复制到内存中
返回Dictionary view对象,可以使用
len()
iter()
in
操作字典的entry的动态视图,字典变化,视图将反映出这些变化。
keys返回一个
类set
对象,也就是可以看作一个set集合。如果values都可以hash,那么items也可以看作是
类set
对象。
Python2中,上面的方法会返回一个新的列表,占据新的内存空间。所以建议使用iterkeys
, itervalues
, iteritems
版本,返回一个迭代器,而不是一个copy。
Python3中,遍历过程中不能增删kv对。如果要删除,需要构建一个可迭代对象保存keys()。
defaultdict与OrderedDict
OrderdDict 仅在3.6之前有效
Last updated
Was this helpful?