映射python字典中的值

新手上路,请多包涵

给定一本字典 { 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)

也就是说,原始字典是否发生变异或创建副本对我来说并不重要。

原文由 Tarrasch 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 776
2 个回答

没有这样的功能;最简单的方法是使用字典理解:

 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()))

但这不是那么可读,真的。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏