繁体   English   中英

以一栏为键,一栏为值将CSV转换为字典

[英]Converting CSV to Dictionary with one column as keys and one column as its values

您好,我有以下格式的CSV文件:

ticket asset
1111   3456
1111   6789
1122   2345
1122   7890

我想将其转换为Dict,例如:

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

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

csv.DictReader()有所帮助,但是我无法提取密钥的唯一票据编号,也无法匹配其下的所有资产的价值。

任何帮助将是巨大的:)

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

如果我想将元组转换为Dict,那将如何工作?

例如:Tuple:(((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)

将您的csv导入pandas数据框。 使用applymap将数据框转换为字符串数据类型。 按票证分组并将所有收集的资产转换为列表。 然后将数据帧转换为字典(dict)

import pandas as pd
df=pd.read_csv('file.csv', header=0)
df=df.applymap(str).groupby('ticket')['asset'].apply(list).to_dict()
print(df)

结果:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM