总结了一些关于字典的小技巧或者注意的地方。
使用zip创建字典
创建字典有以下三种方法
1 | dict(a=1, b=2, c=2) |
推荐使用第二种方法结合zip创建
1 | key = 'abcde' |
使用iteritems来遍历字典
1 | d = dict(a=1, b=2, c=3) |
当然也可以使用items来遍历字典, 与之不同的是iteritems返回一个迭代器。
1 | d = dict(a=1, b=2, c=3) |
1 | In [69]: d.iteritems() |
使用get, pop来获取/删除key
首先,dict[key] 与 delete dict[key]也可以获取/删除key。但是key不存在时,会引发 KeyError 异常。为了避免引发异常可以使用get和带defaut参数的pop
- get(key[, default])
如果key在字典中,返回对应的value, 否则返回default。所以从来不会引发异常。 - pop(key[, default])
如果default未设置,则如果key不在字典中,删除key将引发异常。使用时加上default。
dict(dict1, **dict2)合并两个字典
合并两个字典可以先把两个字典分成key-value对,再连接两个key-value对,生成新的字典。即 dict(dict1.items()+dict2.items())
。不过效率有些低。
使用效率更高的 dict(dict1, **dict2)
连接两个字典。
1 | In [29]: dict1 |
1 | $ python -m timeit -s 'dict1=dict2=dict(a=1,b=2)' 'dict3=dict(dict1,**dict2)' |
谨慎使用dict.copy()
dict.copy()是一个浅拷贝,当遇到字典或者列表时,将不能完全拷贝。使用copy模块的deepcopy()方法。
1 | import copy |