就地修改字典值

14 投票
4 回答
34675 浏览
提问于 2025-04-17 19:49

我想在一个字典(dict)里面直接对它的值应用一个函数,就像在函数式编程中使用的map那样。

假设我有这个字典:

d = { 'a':2, 'b':3 }

我想对字典里的所有值应用一个函数,具体是除以 2.0,这样就会变成:

d = { 'a':1., 'b':1.5 }

那么,最简单的方法是什么呢?

我使用的是Python 3

补充:如果能用一行代码就更好了。除以 2只是个例子,我需要这个函数能够作为参数传入。

4 个回答

9

应该可以帮到你:

>>> d = {'a':2.0, 'b':3.0}
>>> for x in d:
...     d[x]/=2
... 
>>> d
{'a': 1.0, 'b': 1.5}
19

你可以遍历这些键,然后对它们进行更新:

for key, value in d.items():
    d[key] = value / 2
22

你可能会发现,乘法的速度还是比除法快

d2 = {k: v * 0.5 for k, v in d.items()}

对于就地版本

d.update((k, v * 0.5) for k,v in d.items())

对于一般情况

def f(x)
    """Divide the parameter by 2"""
    return x / 2.0

d2 = {k: f(v) for k, v in d.items()}

撰写回答