簡體   English   中英

從文件列和行標題創建嵌套字典

[英]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_idSampleN來查詢值。 例如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM