Skip to main content
 首页 » 编程设计

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

2025年05月04日14lexus

您好,我有一个格式如下的 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)