使用Python 3字典时,我总是必须执行以下操作:

d=dict()
if 'k' in d:
    d['k']+=1
else:
    d['k']=0

我似乎记得有一种本地方法可以执行此操作,但是一直在浏览文档时找不到。你知道这是什么吗?

最佳答案

这是 collections.defaultdict 的用例,这里只是使用默认工厂可调用的int

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> d
defaultdict(<class 'int'>, {})
>>> d['k'] +=1
>>> d
defaultdict(<class 'int'>, {'k': 1})
defaultdict配置为每当搜索缺少的键时创建项目。您为它提供了一个可调用的(这里为int()),每当通过__getitem__的查找传递了不存在的键时,它就会使用该可调用的默认值。该可调用对象存储在名为default_factory的实例属性中。

如果不提供default_factory,则照常会因丢失键而得到KeyError

然后假设您想要一个不同的默认值,也许是1而不是0。您只需要传递一个可提供您所需的起始值的可调用对象,在这种情况下非常简单
>>> d = defaultdict(lambda: 1)

显然,这也可以是任何常规的命名函数。

但是,值得注意的是,如果您尝试使用字典来存储特定值的计数,则 collections.Counter 更适合该工作。
>>> from collections import Counter
>>> Counter('kangaroo')
Counter({'a': 2, 'o': 2, 'n': 1, 'r': 1, 'k': 1, 'g': 1})

关于python - 如何在本地增加字典元素的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38486601/

10-16 22:55