Конвертировать CSV в словарь с двумя ключами - PullRequest
0 голосов
/ 25 февраля 2019

Я новичок, который только начал изучать 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)

Я пробовал коды, подобные приведенным выше, и их варианты, но это не сработало.Я знаю, что мне может понадобиться сделать две петли или около того, чтобы это работало, но я не уверен, как это сделать.

Заранее спасибо!И извините, если я использую неправильные термины в описании.

Poppel

1 Ответ

0 голосов
/ 25 февраля 2019

Вы довольно близко.Вам нужен словарь словаря списка.

Попробуйте:

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']}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...