繁体   English   中英

python dict添加和修改操作

[英]python dict add and modify operation

我正在寻找dict的“更新和插入”操作,这是一项常见的工作:对于列表中的给定键,对于每个键,更新dict中的值。 但是,如果字典中不存在该键,则将默认值插入字典中,然后按以下方式更新:

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

如果k不在dict的键中,则像c ++的std :: map一样执行dict[k] = 0dict[k] += 2

有没有简单的方法? 我不想写if-else

几种方法:

dict.get

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

默认设置

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 ;这些名称遮盖了内置类型)

当你做

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] ,它将更新/创建一个新键。

from collections import defaultdict
d = defaultdict(int)
d['whatever'] += 2
dict[k]=dict.get(k,0)+=2

是你会怎么做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM