映射在一个字典

时间:2016-07-28 13:11:02

标签: python python-3.x

我正在尝试这样做:

list(map(lambda x: x.name, my_dict))

其中my_dict是表单k, v的字典,其中v是对象,v.name已定义。

问题是它使用k的密钥x,我真的想要使用值v

换句话说: 如何映射字典的值?

PS我想避免my_dict[x],因为我将使用concurrent.futures并且不会将完整的dict传递给单独的线程。

2 个答案:

答案 0 :(得分:4)

要检索值的视图,您可以使用.values方法。

map(callable, my_dict.values())

显然,通过使用列表或生成器理解,Python中通常可以避免使用具有普通可调用的map

[x.name for x in my_dict.values()]  # creates list: non-lazy
(x.name for x in my_dict.values())  # creates generator: lazy

答案 1 :(得分:3)

您不需要使用map(),然后将结果转换为列表。相反,你可以通过循环字典值来使用列表理解:

[v.name for v in my_dict.values()]

或者如果您正在寻找功能方法,您可以使用运算符模块中的attrgetter函数:

from operator import attrgetter
map(attrgetter('name'), my_dict.values())