Stackoverflow, привет
У меня есть проблема, которую я почти решил, однако я не знаю, как сделать последний шаг.
Итак, в начальном списке есть два почти идентичных элементы ('Tomato', 3, 'PCS')
и ('Tomato', 2, 'PCS')
, в которых отличается только средний параметр (количество) и в итоге он должен быть суммой этих двух величин. В конце я должен сложить 3 и 2. Я опишу, и было бы легче понять:
Итак, первоначальный список:
initial = [('Egg', 2, 'PCS'), ('Milk', 100, 'ml'), ('Tomato', 3, 'PCS'), ('Beef', 500, 'g'), ('Sweet pepper', 1, 'PCS'), ('Pita bread', 2, 'PCS'), ('Wine vinegar', 1, 'tbsp'), ('Tomato', 2, 'PCS')]
И в конце я должен получить :
{'Beef': {'measure': 'g', 'quantity': 500},
'Egg': {'measure': 'PCS', 'quantity': 2},
'Milk': {'measure': 'ml', 'quantity': 100},
'Pita bread': {'measure': 'PCS', 'quantity': 2},
'Sweet pepper': {'measure': 'PCS', 'quantity': 1},
'Tomato': {'measure': 'PCS', 'quantity': 5},
'Wine vinegar': {'measure': 'tbsp', 'quantity': 1}}
Но в последней, кроме одной строке, я получаю 'Tomato': {'measure': 'PCS', 'quantity': 2}
, потому что последний элемент в списке просто заменяет элемент с похожими характеристиками, а не суммирует «количество».
И результат, который я получаю:
{'Beef': {'measure': 'g', 'quantity': 500},
'Egg': {'measure': 'PCS', 'quantity': 2},
'Milk': {'measure': 'ml', 'quantity': 100},
'Pita bread': {'measure': 'PCS', 'quantity': 2},
'Sweet pepper': {'measure': 'PCS', 'quantity': 1},
'Tomato': {'measure': 'PCS', 'quantity': 2},
'Wine vinegar': {'measure': 'tbsp', 'quantity': 1}}
Мой код:
for elems2 in initial:
dinit = {'measure': elems2[2], 'quantity': elems2[1]}
d = {}.fromkeys([elems2[0]], dinit)
new_book[elems2[0]] = dinit
pprint(new_book)
Может ли кто-нибудь помочь мне решить проблему суммирования «количества» - элемента внутри элемента список