[英]python dict add and modify operation
我正在寻找dict的“更新和插入”操作,这是一项常见的工作:对于列表中的给定键,对于每个键,更新dict中的值。 但是,如果字典中不存在该键,则将默认值插入字典中,然后按以下方式更新:
for k in list:
dict[k] += 2
如果k不在dict的键中,则像c ++的std :: map一样执行dict[k] = 0
和dict[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.