是否有方便的方法将功能映射到字典中的指定键?
即给定
d = {"a": 1, "b": 2, "c": 3}
想将一个函数(例如f)映射到键“ a”和“ c”:
{"a": f(1), "b": 2, "c": f(3)}
编辑
寻找不会更新输入字典的方法。
答案 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])