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}.
一种方法是使用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™