给定一个字典 { k1: v1, k2: v2 ... }
我想得到 { k1: f(v1), k2: f(v2) ... }
如果我传递了一个函数 f
。
有没有这样的内置函数?还是我必须这样做
dict([(k, f(v)) for (k, v) in my_dictionary.iteritems()])
理想情况下我会写
my_dictionary.map_values(f)
或
my_dictionary.mutate_values_with(f)
也就是说,原始字典是否发生变异或创建副本对我来说无关紧要。
最佳答案
没有这样的功能;最简单的方法是使用字典理解:
my_dictionary = {k: f(v) for k, v in my_dictionary.items()}
在 python 2.7 中,使用 .iteritems()
方法代替 .items()
来节省内存。 dict 理解语法直到 python 2.7 才引入。
请注意,列表中也没有这种方法;您必须使用列表理解或 map()
函数。
因此,您也可以使用 map()
函数来处理您的 dict:
my_dictionary = dict(map(lambda kv: (kv[0], f(kv[1])), my_dictionary.iteritems()))
但这不是那么可读,真的。
https://stackoverflow.com/questions/12229064/