【发布时间】:2019-04-16 10:46:19
【问题描述】:
场景是我有一个二维列表。内部列表的每一项都是元组(键,值对)。该键可能在列表中重复。我想动态创建一个默认字典,最终字典存储键,以及二维列表中该键的所有值的累积和。
放代码:
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} 我做错了什么?或者是不是在使用理解时字典不是动态创建和修改的?
【问题讨论】:
标签: python python-3.x nested-lists defaultdict dictionary-comprehension