Как получить словарь словарей из текстового файла в python? - PullRequest
0 голосов
/ 02 декабря 2019

Я не могу понять, как создать словарь словарей для того, сколько фруктов я купил за несколько дней.

Учитывая текстовый файл, который выглядит так

0    apple
0    orange
1    apple
1    apple
1    strawberry
2    orange

В первом столбце указывается, в какой день был куплен фрукт, а во втором - какой фрукт был куплен в этот день.

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

{0: {'apple': 1, 'orange': 1, 'strawberry': 0}, 1: {'apple': 2, 'orange': 0, 'strawberry': 1}, 2: {'apple': 0, 'orange': 1, 'strawberry': 0}}

Я пытаюсь сделать это без понимания списка или какого-либо импорта, поскольку я не совсем понимаю это. Любая помощь будет отличной!

1 Ответ

2 голосов
/ 02 декабря 2019

Эту проблему можно сделать несколько проще, используя классы collection.defaultdict и collection.Counter . Вам нужен словарь, в котором номер дня отображается на Counter фруктов за этот день.

from collections import Counter, defaultdict

result = defaultdict(Counter)

with open('filename.txt') as f:
    for line in f:
        day, fruit = line.split()
        day = int(day)
        result[day][fruit] += 1

Использование defaultdict и Counter избавляет вас от необходимости проверять, существует ли ключ, и установитьначальное значение, когда это не так. Я не рекомендую избегать импорта только ради него, но если вы действительно хотите «чистое» решение, то приведенный выше код примерно переводится в:

result = dict()

with open('filename.txt') as f:
    for line in f:
        day, fruit = line.split()
        day = int(day)
        if day not in result:
            result[day] = dict()
        if fruit not in result[day]
            result[day][fruit] = 0
        result[day][fruit] += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...