Вы можете использовать словарное понимание:
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])