python - 映射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)

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

最佳答案

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

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/

相关文章:

linux - 在一行中执行组合多个 Linux 命令

python - 使用多处理 Pool.map() 时无法 pickle

python - 超出相对导入中的顶级包错误

c - 什么是 LD_PRELOAD 技巧?

python - 在 Python 中使用多处理时我应该如何记录?

linux - 如何让 grep 打印每个匹配行下方和上方的行?

linux - 如何从 Linux shell 运行具有与当前不同工作目录的程序?

python - 如何在 Python 中实现 Softmax 函数

linux - Linux 内核中可能/不太可能的宏是如何工作的,它们有什么好处?

python - 为什么 PEP-8 指定最大行长度为 79 个字符?