在地方修改dict值

Mic*_*Mic 9 python dictionary functional-programming map

我想将函数应用于dictinplace中的值dict(如map在函数式编程设置中).

假设我有这个dict:

d = { 'a':2, 'b':3 }
Run Code Online (Sandbox Code Playgroud)

我想将该函数divide by 2.0应用于dict的所有值,导致:

d = { 'a':1., 'b':1.5 }
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

我使用Python 3.

编辑: 单行会很好.这divide by 2只是一个例子,我需要函数作为参数.

Rei*_*ica 15

您可以循环键并更新它们:

for key, value in d.items():
    d[key] = value / 2
Run Code Online (Sandbox Code Playgroud)


Joh*_*ooy 13

您可能会发现乘法仍然比分频快

d2 = {k: v * 0.5 for k, v in d.items()}
Run Code Online (Sandbox Code Playgroud)

对于原位版本

d.update((k, v * 0.5) for k,v in d.items())
Run Code Online (Sandbox Code Playgroud)

对于一般情况

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

d2 = {k: f(v) for k, v in d.items()}
Run Code Online (Sandbox Code Playgroud)

  • 你真的认为乘法会比除法快得多吗?也许在 PyPy 中,除了算术之外的所有成本都被缩小到产生影响的程度,但在 CPython 中,我敢打赌你甚至无法检测到差异...... (3认同)

Ish*_*eck 9

应该适合你:

>>> d = {'a':2.0, 'b':3.0}
>>> for x in d:
...     d[x]/=2
... 
>>> d
{'a': 1.0, 'b': 1.5}
Run Code Online (Sandbox Code Playgroud)