Сценарий таков, что у меня есть двумерный список.Каждый элемент внутреннего списка является кортежем (ключ, пара значений).Ключ может повториться в списке.Я хочу на лету создать dict по умолчанию таким образом, чтобы, наконец, в словаре хранился ключ и суммарная сумма всех значений этого ключа из двумерного списка.
Чтобы поставить код:
listOfItems = [[('a', 1), ('b', 3)], [('a', 6)], [('c', 0), ('d', 5), ('b', 2)]]
finalDict = defaultdict(int)
for eachItem in listOfItems:
for key, val in eachItem:
finalDict[key] += val
print(finalDict)
Это дает мне то, что я хочу: defaultdict(<class 'int'>, {'a': 7, 'b': 5, 'c': 0, 'd': 5})
, но я ищу более «Pythonic» способ с использованием пониманий.Поэтому я попробовал следующее:
finalDict = defaultdict(int)
finalDict = {key : finalDict[key]+val for eachItem in listOfItems for key, val in eachItem}
print(finalDict)
Но вывод: {'a': 6, 'b': 2, 'c': 0, 'd': 5}
Что я делаю не так?Или же при использовании понимания Словарь не создается и не изменяется на лету?