正如标题所示,我有一个类似于此的词典:
dic = {0: 3.2, 1: 3.7, 2: 4.2, 3: 4.7, 4: 5.2, 5: 5.7}
我现在想要将整数值添加或减去dic中的每个值,但我的简单尝试
dic.values() = dic.values() + 1
不起作用,因为我们在这里使用.values()函数。有没有一种快速简单的方法来修改Python中字典的每个值?
答案 0 :(得分:3)
广播的添加无法应用于列表(或dict_values
对象)。
使用for
循环来更新每个键的值:
for k in dic:
dic[k] += 1
答案 1 :(得分:2)
你可以这么做,
for key in dic: dic[key] += 1
In [12]: dic
Out[12]: {0: 5.2, 1: 5.7, 2: 6.2, 3: 6.7, 4: 7.2, 5: 7.7}
答案 2 :(得分:1)
为了完整起见,您还可以使用词典理解:
>>> dic = {0: 3.2, 1: 3.7, 2: 4.2, 3: 4.7, 4: 5.2, 5: 5.7}
>>> dic = {k:v+1 for k,v in dic.iteritems()}
>>> dic
{0: 4.2, 1: 4.7, 2: 5.2, 3: 5.7, 4: 6.2, 5: 6.7}
请注意,我使用了iteritems()
而不是items()
,因为它避免了在中间列表中创建。只有你的字数很大才真正重要,但我想我会提到它。使用iteritems
更类似于编写for
循环,因为我们只遍历dict一次。
有关两种方法之间差异的详细信息,请参阅this答案。
另请注意(如链接答案中所述)iteritems()
是Python 2,对于Python 3,items()
无论如何都会返回一个生成器。