给定一个字典{ 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)
也就是说,对我来说,原词典是否被修改或是一个副本是否被创建并不重要。
Tags:
没有这样的功能;最简单的方法是使用听写理解:
在python 2.7中,使用
.iteritems()
方法而不是.items()
来保存内存。直到python 2.7才引入dict理解语法。注意,列表中也没有这样的方法;您必须使用列表理解或
map()
函数。因此,您也可以使用
map()
函数来处理dict:但那没那么可读,真的。
您可以就地执行此操作,而不是创建新的dict,这对于大型词典(如果您不需要副本)可能更为可取。
结果
my_dictionary
包含:这些toolz非常适合这种简单而重复的逻辑。
http://toolz.readthedocs.org/en/latest/api.html#toolz.dicttoolz.valmap
把你带到你想去的地方。
相关问题 更多 >
编程相关推荐