如何在Python中为字典的每个值添加/减去整数?

时间:2017-06-14 06:44:37

标签: python dictionary

正如标题所示,我有一个类似于此的词典:

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中字典的每个值?

3 个答案:

答案 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()无论如何都会返回一个生成器。