Python将计数器附加到计数器,就像Python字典更新一样
我有两个计数器(集合中的计数器),我希望将一个计数器附加到另一个计数器,而第一个计数器中的重叠键将被忽略。像(python字典更新) 例如:Python将计数器附加到计数器,就像Python字典更新一样,python,python-3.x,dictionary,counter,python-collections,Python,Python 3.x,Dictionary,Counter,Python Collections,我有两个计数器(集合中的计数器),我希望将一个计数器附加到另一个计数器,而第一个计数器中的重叠键将被忽略。像(python字典更新) 例如: from collections import Counter a = Counter(a=4, b=0, c=1) b = Counter(z=1, b=2, c=3) 例如(忽略第一个计数器中的重叠键): 我想我总是可以把它转换成某种字典,然后再转换回计数器,或者使用一个条件。但我想知道是否有更好的选择,因为我在一个相当大的数据集上使用它。,因此您可
from collections import Counter
a = Counter(a=4, b=0, c=1)
b = Counter(z=1, b=2, c=3)
例如(忽略第一个计数器中的重叠键):
我想我总是可以把它转换成某种字典,然后再转换回计数器,或者使用一个条件。但我想知道是否有更好的选择,因为我在一个相当大的数据集上使用它。,因此您可以显式调用dict.update
(而不是Counter.update
),并将两个计数器作为参数传递:
a = Counter(a=4, b=0, c=1)
b = Counter(z=1, b=2, c=3)
dict.update(a, b)
print(a)
# Counter({'a': 4, 'c': 3, 'b': 2, 'z': 1})
你也可以使用
我想你可以对b中的key做
:如果key不在a:a[key]=b[key]
我试过了,但它返回aNoneType
。“我错过什么了吗?”谢尔顿齐当然。它在适当的位置修改a
,因此它不必返回任何内容。@Aran Fey Oh smart,您可以调用dict.update
而不是Counter.update
。比我一开始想象的要微妙得多,干得好。为什么不使用a.update(b)
?我刚刚检查了一下,结果还是一样的。
a = Counter(a=4, b=0, c=1)
b = Counter(z=1, b=2, c=3)
dict.update(a, b)
print(a)
# Counter({'a': 4, 'c': 3, 'b': 2, 'z': 1})
from collections import Counter
a = Counter(a=4, b=0, c=1)
b = Counter(z=1, b=2, c=3)
Counter({**a, **b})
Counter({'a': 4, 'c': 3, 'b': 2, 'z': 1})