菜鸟笔记
提升您的技术认知

python 字典键映射多个值,字典值为列表,defaultdict-ag真人游戏

背景

由于很多文件的中的记录都可转化为元组或列表,因此,对于这些记录的归纳统计就需要将所有列表转换为字典。
例如,有如下记录:

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://www.coonote.com/python-note/python-merges-multiple-lists-into-dictionary.html

网站地图