我可以同时向字典添加密钥并为密钥分配键+ 1值吗?
我在解释器中的原始脚本看起来像这样:
>>> if isinstance('my current string', basestring):
... mydictionary[mynewkey] = mydictionary[mynewkey] + 1
我得到的错误如下:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'mynewkey' is not defined
所以我想在mydictionary中添加mynewkey和1的新值,最终能够打印mydictionary并提出{mynewkey: 1}
。
答案 0 :(得分:7)
一种方法是使用dict.get()
:
mydictionary[mynewkey] = mydictionary.get(mynewkey, 0) + 1
此处mydictionary.get(mynewkey, 0)
将返回mynewkey
中指定的键的值,如果不存在此键,则返回0
。
最简单的方法是使用collections.defaultdict()
object,int
作为工厂:
from collections import defaultdict
mydictionary = defaultdict(int)
您尝试访问但尚未存在的任何密钥都会初始化为0
,您只需执行以下操作:
if isinstance('my current string', basestring):
mydictionary[mynewkey] += 1
并且它将是Just Work™
答案 1 :(得分:0)
每次出现一个新键时,您需要先将其初始化为某个默认值,通常为零。之后,您可以增加它而不会出现任何错误消息。演示如下所示:
>>> a=['a','b','c','a','a','c']
>>> for mynewkey in a:
... d.setdefault(mynewkey,0)
... d[mynewkey]=d[mynewkey]+1
...
>>> d
{'a': 3, 'c': 2, 'b': 1}