【问题标题】:Convert CSV to dictionary with two keys使用两个键将 CSV 转换为字典
【发布时间】:2019-07-18 23:02:48
【问题描述】:

我是刚开始学习 Python 的新手。

我有一个 CSV 文件如下:

theme,type,name
food,meat,bacon
food,meat,lamb
food,meat,beef
food,fruit,apple
food,fruit,pear
food,fruit,banana
food,fruit,kiwi
animal,reptile,lizard
animal,reptile,snake
animal,mammal,mouse
animal,mammal,cat

我正在尝试将其转换为 Python 字典,最佳输出应该是这样的:

{food:{meat:[bacon,lamb],fruit:[apple, pear, banana, kiwi]},animal:{reptile:{[lizard,snake],mammal:[mouse,cat]}

我的代码:

import csv

testDict={}

with open('file.CSV','r') as f:
    tempDict = csv.DictReader(f)
    for getPKvalue in tempDict:
        testDict.setdefault(getPKvalue['theme'],[]).append(getPKvalue['type'])

print(testDict)

我尝试了上述代码及其变体,但没有成功。我知道我可能需要做两个循环才能让它工作,但我不知道如何做。

提前致谢!如果我在描述中使用了错误的术语,很抱歉。

波佩尔

【问题讨论】:

    标签: python excel csv dictionary key


    【解决方案1】:

    你很接近。你需要一个列表字典的字典。

    试试:

    import csv
    
    testDict = {}
    with open(filename) as f:
        tempDict = csv.DictReader(f)
        for row in tempDict:
            testDict.setdefault(row['theme'],{}).setdefault(row['type'], []).append(row['name'])
    print(testDict)
    

    输出:

    {'animal': {'mammal': ['mouse', 'cat'], 'reptile': ['lizard', 'snake']},
     'food': {'fruit': ['apple', 'pear', 'banana', 'kiwi'],
              'meat': ['bacon', 'lamb', 'beef']}}
    

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      相关资源
      最近更新 更多