我正在尝试这样做:
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传递给单独的线程。
答案 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())