作家
登录

关于高效使用Python字典的清单

作者: 来源: 2017-08-24 10:04:40 阅读 我要评论

'school bus'

通俗的方法就是先断定 key 是否已经存在,如不雅不存在则要先用列表对象进行初始化,再履行后续操作。而更好的方法就是应用字典中的 setdefault 办法。

推导式是个绝妙的器械,列表推导式一出,map、filter等函数黯然掉色,自 Python2.7今后的版本,此特点扩大到了字典和集称身上,构建字典对象无需调用 dict 办法。

bad

  1. for (key, value) in data: 
  2.     if key in groups: 
  3.         groups[key].append(value) 
  4.     else
  5.         groups[key] = [value] 
  1. groups = {} 
  2. for (key, value) in data: 
  3.     groups.setdefault(key, []).append(value) 

setdefault 的感化是:

  • 如不雅 key 存在于字典中,那么直接返回对应的值,等效于 get 办法
  • 如不雅 key 不存在字典中,则会用 setdefault 中的第二个参数作为该 key 的值,再返回该值。

4、用 defaultdict 初始化字典对象

如不雅不欲望 d[x] 在 x 不存在时报错,除了在获取元素时应用 get 办法之外,别的一种方法是用 collections 模块中的 defaultdict,在初始化字典的时刻指定一个函数,其实 defaultdit 是 dict 的子类。

  1. from collections import defaultdict  
  2. groups = defaultdict(list) 
  3. for (key, value) in data: 
  4.     groups[key].append(value) 

iteritems 返回的是迭代器对象,迭代器对象具有惰性加载的特点,只有真正须要的时刻才生成值,这种方法在迭代过程中不须要额外的内存来装载这些数据。留意 Python3 中,只有 items 办法了,它等价于 Python2 中的 iteritems,而 iteritems 这个办法名被移除了。

当 key 不存在于字典中时,list 函数将被调用处返回一个空列表赋值给 d[key],如许一来,你就不消担心调用 d[k] 会报错了。

5、用 fromkeys 将列表转换成字典

  1. keys = {'a''e''i''o''u' } 
  2. value = [] 
  3. d = dict.fromkeys(keys, value) 
  4. print(d) 
  5.  
  6. >>> 
  7. {'i': [], 'u': [], 'e': [],  
  8.  'a': [], 'o': []} 

6、用字典实现 switch ... case 语句

Python 中没有 switch ... case 语句,这个问题Python之父龟叔表示这个语法以前没有,如今没有,今后也不会有。因为Python简洁的语法完全可以用 if ... elif 实现。如不雅有太多的分支断定,还可以应用字典来代替。

  1. if arg == 0: 
  2.     return 'zero' 
  3. elif arg == 1: 
  4.     return 'one'

      推荐阅读

      5G概念炒的火热,公共WiFi建设却为何不见进展?

    【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践对于公共WiFi来说,确切存在市场需求,只是办事质量须要进步。这么看下来,不论对于何种公共WiFi,移动数据技>>>详细阅读


    本文标题:关于高效使用Python字典的清单

    地址:http://www.17bianji.com/lsqh/36908.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)