Сопоставить функцию со значениями указанных ключей в словаре - PullRequest
0 голосов
/ 21 декабря 2018

Есть ли удобный способ сопоставить функцию указанным ключам в словаре?

Т.е., учитывая,

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

хотел бы сопоставить функцию, скажем, f, с клавишами "a "and" c ":

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

EDIT

Поиск методов, которые не будут обновлять словарь ввода.

1 Ответ

0 голосов
/ 21 декабря 2018

Вы можете использовать словарное понимание:

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...