给定一个字典,{ k1: v1, k2: v2 ... }我想{ k1: f(v1), k2: f(v2) ... }提供一个函数f。
{ 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)
也就是说,对原始词典进行了突变还是创建副本对我来说都没有关系。
没有这样的功能;最简单的方法是使用dict理解:
my_dictionary = {k: f(v) for k, v in my_dictionary.items()}
在python 2.7中,请使用.iteritems()方法而不是.items()节省内存。dict理解语法直到python 2.7才引入。
.iteritems()
.items()
注意,列表上也没有这种方法。您将不得不使用列表推导或map()函数。
map()
这样,您也可以使用该map()函数来处理字典:
my_dictionary = dict(map(lambda kv: (kv[0], f(kv[1])), my_dictionary.iteritems()))
但这确实不是那么容易理解。