我有:
([(5,2),(7,2)],[(5,1),(7,3),(11,1)])
我需要添加具有相同第一个元素的第二个元素。
输出:[(5,3),(7,5),(11,1)]
这是一个很好的用例collections.Counter
...
from collections import Counter
tup = ([(5,2),(7,2)], [(5,1),(7,3),(11,1)])
counts = sum((Counter(dict(sublist)) for sublist in tup), Counter())
result = list(counts.items())
print(result)
这里的一个缺点是您将失去输入的顺序。它们似乎是按键排序的,因此您可以对项目进行排序:
result = sorted(counts.items())
ACounter
是一本字典,其目的是保存垃圾箱的“计数”。计数的设计巧妙,因此您可以将它们简单地加在一起(这将计数按“ bin-wise”进行添加-如果两个计数器中都不存在bin,则假定丢失的bin的值为0)。因此,这解释了为什么我们可以sum
在大量计数器上使用以获得具有所需值的字典的原因。不幸的是,对于该解决方案,Counter
不能通过使用产生2项序列(如法线贴图)的可迭代对象来实例化...,
Counter([(1, 2), (3, 4)])
将创建一个Counter
带有按键(1, 2)
和(3, 4)
-这两个值是1,它做,如果你有一个却映射创建为预期的工作:
Counter(dict([(1, 2), (3, 4)]))
Counter
用键1
和3
(以及值2
和4
)创建一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句