简体   繁体   中英

Map a function to values of specified keys in dictionary

Is there a convenient way to map a function to specified keys in a dictionary?

Ie, given

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

would like to map a function, say f, to keys "a" and "c":

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

EDIT

Looking for methods that will not update the input dictionary.

You can use a dictionary comprehension:

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

Note that f(v) will be evaluated (called) immediately and its return values will be stored as the dictionary's values.

If you want to store the function and call it later (with the arguments already stored) you can use 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

If you only want specific keys mapped you can of course not use .items and just override those keys:

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

or more generalized

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM