博客
关于我
Python 字典键映射多个值,字典值为列表,defaultdict
阅读量:256 次
发布时间:2019-03-01

本文共 689 字,大约阅读时间需要 2 分钟。

背景

在处理大量数据时,涉及到元组或列表的记录归纳统计时,需要将所有列表转换为字典以便统计。以下是一个示例:

l1 = ['张三', '语文', 50]l2 = ['李四', '语文', 60]l3 = ['张三', '数学', 70]l4 = ['李四', '数学', 60]

期望结果为:

{    '张三': [50, 70],    '李四': [60, 60]}

代码

from collections import defaultdictl1 = ['张三', '语文', 50]l2 = ['李四', '语文', 60]l3 = ['张三', '数学', 70]l4 = ['李四', '数学', 60]result = defaultdict(list)for record in (l1, l2, l3, l4):    name = record[0]    score = record[2]    result[name].append(score)print(result)

分析

defaultdict的作用是,当字典中的键不存在时,返回默认值而不是KeyErrordefaultdict接受一个工厂函数作为参数,用于在键不存在时创建默认值。例如:

  • defaultdict(list):当键不存在时,返回一个空列表。
  • defaultdict(set):当键不存在时,返回一个空集合。
  • defaultdict(str):当键不存在时,返回一个空字符串。

优点

  • 不再需要检查字典键是否存在。
  • 代码简洁,易于维护。
  • 适合批量处理数据。

参考文章

你可能感兴趣的文章
Pyinstaller依赖项的许可证
查看>>
PyInstaller可执行文件找不到包含的flASK-COMPRESS
查看>>
Pyinstaller和海运
查看>>
PyInstaller图标选项在Mac上不起作用
查看>>
pyinstaller的使用
查看>>
pyinstaller超级加密 (加壳和转c)
查看>>
pyinstaller错误:OSError:找不到Python库:libpython3.4mu.so.1.0、libpython3.4m.so.1.0、libpython3.4.so.1.0
查看>>
Pyinstaller:‘;Fiona‘;没有属性‘;_loading‘;(很可能是由于循环导入)
查看>>
pyinstaller:更改应用程序图标
查看>>
Pylint“未解决的导入“;Visual Studio 代码中的错误
查看>>
pyLoad远程代码执行漏洞复现(CVE-2023-0297)
查看>>
pymongo update_one(),upsert=True,不使用$运算符
查看>>
pymongo 中的快速或批量更新
查看>>
pymongo删除操作
查看>>
PyMongo按多个关键点分组
查看>>
Pympress:强大的双屏PDF阅读器
查看>>
pymysql.err.InternalError: (1054, "Unknown column '27D24A3B' in 'where clause'")之错误解决
查看>>
pymysql.err.OperationalError: (1364, “Field ‘id‘ doesn‘t have a default value“)
查看>>
Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
查看>>
PyMySQL库对Mysql数据库进行增删改查与工具类封装
查看>>