python dict添加和修改操作

时间:2014-05-15 03:19:28

标签: python dictionary

我正在寻找dict的“更新和插入”操作,有一个共同的工作:对于列表中的给定键,每个键更新dict中的值。但如果dict中不存在该键,则在dict中插入一个默认值,然后更新如下:

for k in list:
    dict[k] += 2

如果k不在dict的键中,请{c}的std :: map

执行dict[k] = 0dict[k] += 2

有简单的方法吗?我不想写一个if-else

4 个答案:

答案 0 :(得分:2)

有几种方法:

<强> dict.get

for k in li:
    d[k] = d.get(k,0) + 2

<强> setdefault

for k in li:
    d[k] = d.setdefault(k,0) + 2

您会注意到这基本上等同于get语法。两者之间的区别在于,setdefault实际上的调用会创建默认值(如果它尚不存在),所以您也可以写:

for k in li:
    d.setdefault(k,0)
    d[k] += 2

使用defaultdict

from collections import defaultdict
d = defaultdict(int)

for k in list:
    d[k] += 2

(不要为您的列表list命名,不要将您的词组命名为dict;这些名称会影响内置类型)

答案 1 :(得分:1)

当你这样做时

dict[k] += 2

这意味着

dict[k] = dict[k] + 2

因此,Python尝试获取密钥k的值,但没有找到。所以,它失败了。但是我们可以使用dict.get,当找不到密钥时,它将返回默认值。它可以像这样使用

for k in my_list:
    d[k] = d.get(k, 0) + 2

这里,如果找不到密钥,我们要求字典对象返回0。然后我们将右手表达式的值赋给d[k],这将更新/创建一个新密钥。

答案 2 :(得分:1)

from collections import defaultdict
d = defaultdict(int)
d['whatever'] += 2

答案 3 :(得分:0)

dict[k]=dict.get(k,0)+=2

你是怎么做的。