通俗的方法就是先断定 key 是否已经存在,如不雅不存在则要先用列表对象进行初始化,再履行后续操作。而更好的方法就是应用字典中的 setdefault 办法。
推导式是个绝妙的器械,列表推导式一出,map、filter等函数黯然掉色,自 Python2.7今后的版本,此特点扩大到了字典和集称身上,构建字典对象无需调用 dict 办法。
bad
- for (key, value) in data:
- if key in groups:
- groups[key].append(value)
- else:
- groups[key] = [value]
- groups = {}
- for (key, value) in data:
- groups.setdefault(key, []).append(value)
setdefault 的感化是:
- 如不雅 key 存在于字典中,那么直接返回对应的值,等效于 get 办法
- 如不雅 key 不存在字典中,则会用 setdefault 中的第二个参数作为该 key 的值,再返回该值。
4、用 defaultdict 初始化字典对象
如不雅不欲望 d[x] 在 x 不存在时报错,除了在获取元素时应用 get 办法之外,别的一种方法是用 collections 模块中的 defaultdict,在初始化字典的时刻指定一个函数,其实 defaultdit 是 dict 的子类。
- from collections import defaultdict
- groups = defaultdict(list)
- for (key, value) in data:
- groups[key].append(value)
iteritems 返回的是迭代器对象,迭代器对象具有惰性加载的特点,只有真正须要的时刻才生成值,这种方法在迭代过程中不须要额外的内存来装载这些数据。留意 Python3 中,只有 items 办法了,它等价于 Python2 中的 iteritems,而 iteritems 这个办法名被移除了。
当 key 不存在于字典中时,list 函数将被调用处返回一个空列表赋值给 d[key],如许一来,你就不消担心调用 d[k] 会报错了。
5、用 fromkeys 将列表转换成字典
- keys = {'a', 'e', 'i', 'o', 'u' }
- value = []
- d = dict.fromkeys(keys, value)
- print(d)
- >>>
- {'i': [], 'u': [], 'e': [],
- 'a': [], 'o': []}
6、用字典实现 switch ... case 语句
Python 中没有 switch ... case 语句,这个问题Python之父龟叔表示这个语法以前没有,如今没有,今后也不会有。因为Python简洁的语法完全可以用 if ... elif 实现。如不雅有太多的分支断定,还可以应用字典来代替。
- if arg == 0:
- return 'zero'
- elif arg == 1:
- return 'one'
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践对于公共WiFi来说,确切存在市场需求,只是办事质量须要进步。这么看下来,不论对于何种公共WiFi,移动数据技>>>详细阅读
本文标题:关于高效使用Python字典的清单
地址:http://www.17bianji.com/lsqh/36908.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示