[英]I want to create a nested dictionary from a csv file with headers as keys
[英]Create nested dictionary from file column and row headers
我有一个 csv 文件,我想根据第一行和第一列查询结果。 给定一个看起来像的 csv:
subj_id, Sample1, Sample2, Sample3
XXX, 1, 2, 3
YYY, 4, 5, 6
ZZZ, 7, 8, 9
我想使用subj_id
和SampleN
来查询值。 例如:
dct['XXX']['Sample1'] = 1, dct['YYY']['Sample2'] = 5
我曾尝试使用csv.DictReader
,但没有成功。 如何创建像上面这样的字典? (注意:我使用的是 python 3.6,因为我看到 DictReader 因 python 版本而略有不同。)
我的尝试基于这个 SO question ,开始是:
import csv
from collections import defaultdict
dct = defaultdict(dict)
with open('toy_out_test_results.csv', 'r') as csv_file:
for row in csv.DictReader(csv_file, fieldnames=['subj_id','Sample1','Sample2','Sample3']):
dct[row['subj_id']][row['???']] =
但我在这里遇到了障碍。
您可以根据可以从行中弹出的row['subj_id']
值将行字典分配给dct
字典:
import csv
dct = {}
with open('toy_out_test_results.csv', 'r') as csv_file:
for row in csv.DictReader(csv_file):
dct[row.pop('subj_id')] = row
print(dct['XXX']['Sample1']) # => '1'
这假设 CSV 没有额外的空格:
subj_id,Sample1,Sample2,Sample3
XXX,1,2,3
YYY,4,5,6
ZZZ,7,8,9
请注意,重复的subj_id
将被最后一次看到的覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.