python - 将 CSV 转换为字典,其中一列作为键,一列作为其值
问题描述
您好,我有一个格式如下的 CSV 文件:
ticket asset
1111 3456
1111 6789
1122 2345
1122 7890
我想把它转换成一个像这样的字典:
{'1111': ['3456', '6789'], '1122':['2345', '7890']}
基本上希望将票作为“键”并将该票下的所有资产作为“值”。
csv.DictReader() 有点帮助,但我无法为键提取唯一的票号并匹配其下的所有资产的值。
任何帮助都会很棒:)
感谢您如此快速地获取 CSV > Dict!
如果我想将元组转换为字典,那将如何工作?
例如:元组:((1111, 3456), (1111, 6789), (1122, 2345), (1122, 7890))
我希望将其转换为:
{'1111': ['3456', '6789'], '1122':['2345', '7890']}
解决方案
使用collections.defaultdict
:
from collections import defaultdict
import csv
d = defaultdict(list)
with open(filename, 'r', newline='') as f:
reader = csv.reader(f, delimiter='\t')
next(reader) # toss headers
for ticket, asset in reader:
d[ticket].append(asset)
使用常规字典:
import csv
d = {}
with open(filename, 'r', newline='') as f:
reader = csv.reader(f, delimiter='\t')
next(reader) # toss headers
for ticket, asset in reader:
d.setdefault(ticket, []).append(asset)
推荐阅读
- matlab - 如何删除“无限”while 循环以改进 MATLAB 代码?
- python - 使用 Beautifulsoup 和 Python 进行网页抓取不起作用
- android - 如何在我的 Android 11 应用中隐藏状态栏?
- sql - 如何获取所有表名、列名、列值及其约束?
- java - JLS 的哪一部分指定您不能从 List > 转换为 List
- >?
- scala - Spark Scala - 通过有条件检查向数据框/数据添加新列
其他列数 - javascript - Vue JS如何纠正“避免直接改变道具”?
- python - Django Querysets 在视图中添加附加信息
- android - 当我单击搜索输入字段时,Android SearchView 仅短暂显示光标,并且没有键盘显示。无法输入文字
- r - 如何更改 R 中的绘图大小?