标签:defaultdict Python 张三 50 60 李四 70 字典
背景
由于很多文件的中的记录都可转化为元组或列表,因此,对于这些记录的归纳统计就需要将所有列表转换为字典。
例如,有如下记录:
l1 = ['张三', '语文', 50]
l2 = ['李四', '语文', 60]
l3 = ['张三', '数学', 70]
l4 = ['李四', '数学', 60]
预期结果为:
{'张三': [50, 70], '李四': [60, 60]}
代码
In [1]: from collections import defaultdict
In [2]: l1 = ['张三', '语文', 50]
...: l2 = ['李四', '语文', 60]
...: l3 = ['张三', '数学', 70]
...: l4 = ['李四', '数学', 60]
In [3]: result = defaultdict(list)
In [4]: for i in (l1,l2,l3,l4):
...: result[i[0]].append(i[2])
In [5]: result
Out[5]: defaultdict(list, {'张三': [50, 70], '李四': [60, 60]})
In [6]: result['张三']
Out[6]: [50, 70]
分析
defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。
defaultdict接受一个工厂函数作为参数,如下来构造:
dict =defaultdict( factory_function)
这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0。
优点
不用再检测字典键是否存在!
传统方法见https://blog.csdn.net/mighty13/article/details/107144878
标签:defaultdict,Python,张三,50,60,李四,70,字典 来源: https://blog.csdn.net/mighty13/article/details/110811072
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。