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

时间:2014-10-31 13:09:05

标签: python dictionary key

我可以同时向字典添加密钥并为密钥分配键+ 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}

2 个答案:

答案 0 :(得分:7)

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

mydictionary[mynewkey] = mydictionary.get(mynewkey, 0) + 1

此处mydictionary.get(mynewkey, 0)将返回mynewkey中指定的键的值,如果不存在此键,则返回0

最简单的方法是使用collections.defaultdict() objectint作为工厂:

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}