11

(関数型プログラミング設定のように)のインdictプレースの値に関数を適用したいと思います。dictmap

私がこれを持っているとしましょうdict

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

divide by 2.0dictのすべての値に関数を適用したいので、次のようになります。

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

それを行う最も簡単な方法は何ですか?

私はPython3を使用しています。

編集: ワンライナーがいいでしょう。これdivide by 2は単なる例です。関数をパラメーターにする必要があります。

4

4 に答える 4

19

乗算は除算よりもまだ速いことがわかるかもしれません

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()}
于 2013-03-20T23:28:35.437 に答える
17

キーをループして更新できます。

for key, value in d.items():
    d[key] = value / 2
于 2013-03-20T23:22:42.000 に答える
9

あなたのために働くはずです:

>>> d = {'a':2.0, 'b':3.0}
>>> for x in d:
...     d[x]/=2
... 
>>> d
{'a': 1.0, 'b': 1.5}
于 2013-03-20T23:25:11.783 に答える
3
>>> d = { 'a': 2, 'b': 3 }
>>> {k: v / 2.0 for k, v in d.items()}
{'a': 1.0, 'b': 1.5}
于 2013-03-20T23:20:04.063 に答える