在此词典列表中,我想总结values
匹配关键字的,以便输出如下所示:
dict_x = [{(1, 2): 100}, {(1, 3): 150}, {(1, 3): 150, (3, 4): 150}, {(4, 5): 10, (1, 3): 10, (3, 4): 10}, {(5, 6): 15}]
output:{(1, 2): 100, (1, 3): 310, (3, 4): 160, (4, 5): 10, (5, 6): 15}
我已经阅读了一些页面,例如如何计算Python中列表项的出现?和计算键的一部分在字典python中出现的次数,同时他们计算匹配元素的出现次数,但是他们并没有对匹配元素进行多次求和。感谢您的时间。
这是一种通过以下方式完成此操作的方法collections.Counter
:
>>> from collections import Counter
>>> sum(map(Counter, dict_x), Counter())
Counter({(1, 2): 100, (1, 3): 310, (3, 4): 160, (4, 5): 10, (5, 6): 15})
先前的回应:
也许不是最有效的方法,但是对于一小段清单,您可以分两步进行:
>>> keys = [k for d in dict_x for k in d]
>>> {k: sum(d.get(k, 0) for d in dict_x) for k in keys}
{(1, 2): 100, (1, 3): 310, (3, 4): 160, (4, 5): 10, (5, 6): 15}
第一行获取所有键,第二行对结果求和。我几乎肯定,有一些更聪明的方法可以使用python内置函数来完成此操作……我会考虑的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句