将函数映射到字典中指定键的值

时间:2018-12-20 21:21:30

标签: python dictionary

是否有方便的方法将功能映射到字典中的指定键?

即给定

d = {"a": 1, "b": 2, "c": 3}

想将一个函数(例如f)映射到键“ a”和“ c”:

{"a": f(1), "b": 2, "c": f(3)}

编辑

寻找不会​​更新输入字典的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用字典理解:

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

请注意,f(v)将被立即求值(调用),其返回值将存储为字典的值。

如果要存储该函数并在以后调用它(已经存储了参数),则可以使用functools.partial

from functools import partial


def f(n):
    print(n * 2)


d = {"a": 1, "b": 2, "c": 3}

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

output_dict['b']()
# 4

如果您只想映射特定键,则您当然不能使用.items并仅覆盖那些键:

d['a'] = partial(f, d['a'])

或更笼统

keys = ('a', 'c')
for key in keys:
    d[key] = partial(f, d[key])