#python-3.x
#python-3.x
Вопрос:
как я могу подсчитать, сколько каждого продукта купил человек, если у меня есть словарь, в котором есть фамилия, тип продукта и сколько он его купил
Вот мой код, который создает словарь:
with open("Input_1.txt", "r") as file:
dict_2 = {}
for line in file:
Surname = line.split() [0]
Item = line.split()[1]
Amount=line.split()[2]
dict_2[Surname] = {Item: Amount}
print(dict_2)
например, что он должен напечатать:
{«Иванов» {«aaa» 23}, «Петров» {«aaa» 58} и так далее
Это данные из моего текстового файла:
Иванов ааа 1
Петров ааа 2
Сидоров ааа 3
Иванов ааа 6
Петров ааа 7
Сидоров ааа 8
Иванов ввв 3
Петров ввв 7
Сидоров ааа 345
Иванов ссс 45
Петров ddd 34
Зиборов eee 234
Иванов ааа 45
Иванов бумага 10
Петров ручки 5
Иванов маркер 3
Иванов бумага 7
Петров конверт 20
Иванов конверт 5
Ответ №1:
Если вам нужно простое решение на python, вы можете изменить свой код на:
with open('Input_1.txt', 'r') as file:
dict_2 = {}
for line in file:
surname, item, amount = line.split()
amount = int(amount)
if surname not in dict_2:
dict_2[surname] = {}
if item not in dict_2[surname]:
dict_2[surname][item] = amount
else:
dict_2[surname][item] = amount
Это даст вам следующий словарь:
Ivanov
aaa : 52
bbb : 3
ccc : 45
paper : 17
marker : 3
envelope : 5
Petrov
aaa : 9
bbb : 7
ddd : 34
pens : 5
envelope : 20
Sidorov
aaa : 356
Ziborov
eee : 234
Но это может быть хорошим шансом попробовать pandas
пакет. Это очень полезно при работе с вашими данными. Смотрите тот же код, что и выше, но с использованием pandas
import pandas as pd
my_data = pd.read_csv('Input_1.txt', names=['Surname', 'Item', 'Amount'], sep=' ')
result = my_data.groupby(['Surname', 'Item']).sum()
print(result)
Это дает вам следующий фрейм данных:
Amount
Surname Item
Ivanov aaa 52
bbb 3
ccc 45
envelope 5
marker 3
paper 17
Petrov aaa 9
bbb 7
ddd 34
envelope 20
pens 5
Sidorov aaa 356
Ziborov eee 234