同时在Python中为字典添加键和+ 1值

mda*_*ndr 1 python dictionary key

我可以同时向字典添加密钥并为密钥分配密钥+ 1值吗?

我在解释器中的原始脚本看起来像这样:

>>> if isinstance('my current string', basestring):
...     mydictionary[mynewkey] = mydictionary[mynewkey] + 1
Run Code Online (Sandbox Code Playgroud)

我得到的错误看起来像这样:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'mynewkey' is not defined
Run Code Online (Sandbox Code Playgroud)

所以我想在mydictionary中添加mynewkey和1的新值,最终能够打印mydictionary并提出{mynewkey: 1}.

Mar*_*ers 7

一种方法是使用dict.get():

mydictionary[mynewkey] = mydictionary.get(mynewkey, 0) + 1
Run Code Online (Sandbox Code Playgroud)

这里mydictionary.get(mynewkey, 0)将返回名为的键的值,如果没有这样的键,则mynewkey返回0.

最简单的方法是使用一个collections.defaultdict()对象,int作为工厂:

from collections import defaultdict

mydictionary = defaultdict(int)
Run Code Online (Sandbox Code Playgroud)

您尝试访问的任何密钥尚不存在,然后初始化为0,您可以简单地执行:

if isinstance('my current string', basestring):
    mydictionary[mynewkey] += 1
Run Code Online (Sandbox Code Playgroud)

它就是Just Work™