[英]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.