python - 将 CSV 转换为字典,其中一列作为键,一列作为值

标签 python csv dictionary

您好,我有一个格式如下的 CSV 文件:

ticket asset
1111   3456
1111   6789
1122   2345
1122   7890

我想把它转换成像这样的字典:

{'1111': ['3456', '6789'], '1122':['2345', '7890']}

基本上希望将票据作为“键”,并将该票据下的所有 Assets 作为“值”。

csv.DictReader() 有点帮助,但我无法提取 key 的唯一票号并匹配其下的所有 Assets 以获取值。

任何帮助都会很棒 :)

感谢您如此快速地获取 CSV > Dict!

如果我想将 Tuple 转换为 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)

关于python - 将 CSV 转换为字典,其中一列作为键,一列作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062627/

相关文章:

python - 使用python将csv文件转换为元组列表

c# - System.Collections.Generic.Dictionary `Add` 与集合 `Item`

带有生成器的 Python 闭包

python - Tensorflow中sess.run(c)和c.eval()的区别

java - 通过通用标签在java中高效合并2个大型csv文件

python - python 中如何找到字典中哪些列表值包含最多元素?

python - Django:media_root 的相对路径不在项目目录中

python - 如何在 Python 3.5 (OS X 10.10 Yosemite) 上安装 PyObjC?

linux - 如何从 tar 文件内的 csv 文件中提取前几行而不在 Linux 中提取它?

ruby - 解析包含标题字段作为每行属性的 CSV 文件