相关疑难解决方法(0)

是否有任何pythonic方法来组合两个dicts(为两个键中出现的键添加值)?

例如,我有两个词:

Dict A: {'a': 1, 'b': 2, 'c': 3}
Dict B: {'b': 3, 'c': 4, 'd': 5}
Run Code Online (Sandbox Code Playgroud)

我需要一种pythonic方式"组合"两个dicts,结果是:

{'a': 1, 'b': 5, 'c': 7, 'd': 5}
Run Code Online (Sandbox Code Playgroud)

也就是说:如果两个词中都出现一个键,则添加它们的值,如果它只出现在一个词典中,则保持其值.

python dictionary

460
推荐指数
12
解决办法
12万
查看次数

添加计数器会删除密钥

见下文,为什么+=在我原来的柜台上吹掉一把钥匙?

>>> c = Counter({'a': 0, 'b': 0, 'c': 0})
>>> c.items()
[('a', 0), ('c', 0), ('b', 0)]
>>> c += Counter('abba')
>>> c.items()
[('a', 2), ('b', 2)]
Run Code Online (Sandbox Code Playgroud)

我认为至少可以说这是不礼貌的,"X被统计0次"和"我们甚至不算Xs"之间存在很大差异.它似乎collections.Counter根本不是一个反击,它更像是一个多重集.

但是计数器是dict的子类,我们允许用零值或负值构造它们:Counter(a=0, b=-1).如果它实际上是"一包东西",这不会被禁止,限制init接受可迭代的可迭代物品吗?

进一步混淆事项,对与操作员有不同行为的反制具updatesubtract方法.看来这堂课正在发生身份危机!+-

反击是一个字典还是一个包?

python counter dictionary multiset data-structures

12
推荐指数
2
解决办法
1194
查看次数

Python中有一个可以累积负值的计数器吗?

我使用的Counter是这样的:

from collections import Counter

totals = Counter()
c_one = Counter(a=10, b=1)
c_two = Counter(a=10, b=-101)

totals += c_one
totals += c_two    

# Output: Counter({'a': 20})
print(totals)
Run Code Online (Sandbox Code Playgroud)

这根本不是我的预期.我希望看到:

Counter({'a': 20, 'b': -100})
Run Code Online (Sandbox Code Playgroud)

我的底片去了哪里,是否会有一些Counter让我使用底片?

python counter

7
推荐指数
1
解决办法
2073
查看次数

标签 统计

python ×3

counter ×2

dictionary ×2

data-structures ×1

multiset ×1