映射python字典中的值

问题:

给定一个字典{ k1: v1, k2: v2 ... },如果我传递函数f,我想获得{ k1: f(v1), k2: f(v2) ... }
有没有这样的内置功能?还是我要做的

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()来节省内存。直到python 2.7才引入了dict的理解语法。
请注意,列表上没有这样的方法;您必须使用列表解析或map()函数。
因此,您也可以使用map()函数来处理您的dict:

my_dictionary = dict(map(lambda (k,v): (k, f(v)), my_dictionary.iteritems()))

但这不是可读的,真的。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Mapping over values in a python dictionary

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

87 − 86 =