Python 是否有一种方法可以使用lamba函数仅从dictionary对象提取要添加到列表中的值?

Python 是否有一种方法可以使用lamba函数仅从dictionary对象提取要添加到列表中的值?,python,dictionary,lambda,Python,Dictionary,Lambda,我正在尝试使用lambda函数创建一个列表,该列表只包含列表中特定键的值 我有以下资料: names = None names = list(map(lambda restaurant: dict(name=restaurant['name'] ).values(), yelp_restaurants)) names # This is what I want for the list: # ['Fork &a

我正在尝试使用lambda函数创建一个列表,该列表只包含列表中特定键的值

我有以下资料:

names = None
names = list(map(lambda restaurant: dict(name=restaurant['name']
                                          ).values(), yelp_restaurants))
names

# This is what I want for the list:
# ['Fork & Fig',
#  'Salt And Board',
#  'Frontier Restaurant',
#  'Nexus Brewery',
#  "Devon's Pop Smoke",
#  'Cocina Azul',
#  'Philly Steaks',
#  'Stripes Biscuit']
[dict_values(['Fork & Fig']),
 dict_values(['Salt And Board']),
 dict_values(['Frontier Restaurant']),
 dict_values(['Nexus Brewery']),
 dict_values(["Devon's Pop Smoke"]),
 dict_values(['Cocina Azul']),
 dict_values(['Philly Steaks']),
 dict_values(['Stripes Biscuit'])]
然而,我得到的是:

names = None
names = list(map(lambda restaurant: dict(name=restaurant['name']
                                          ).values(), yelp_restaurants))
names

# This is what I want for the list:
# ['Fork & Fig',
#  'Salt And Board',
#  'Frontier Restaurant',
#  'Nexus Brewery',
#  "Devon's Pop Smoke",
#  'Cocina Azul',
#  'Philly Steaks',
#  'Stripes Biscuit']
[dict_values(['Fork & Fig']),
 dict_values(['Salt And Board']),
 dict_values(['Frontier Restaurant']),
 dict_values(['Nexus Brewery']),
 dict_values(["Devon's Pop Smoke"]),
 dict_values(['Cocina Azul']),
 dict_values(['Philly Steaks']),
 dict_values(['Stripes Biscuit'])]

是否有办法只传递值,消除冗余的“dict_values”前缀?

您用于创建
名称的函数有点冗余:

name=list(地图)(lambda餐厅:dict(name=restaurant['name']
).values(),yelp_)
您概述的控制流程是“从名为
yelp\u
dict
条目的
列表中,我想创建每个
名称的
dict
,从每个
dict
中获取值,并将其放入
列表中。”

为什么??不要挂断lambda的
函数。开始时很简单,就像for循环:

names=[]
对于yelp_餐厅中的餐厅:
名称。附加(餐厅['name'])
看看这有多简单。它完全符合您的要求,只需获取
名称
,并将其填入列表中即可。您可以将其放在列表中:

name=[yelp_餐厅中的餐厅['name']
或者,如果您真的需要使用
lambda
,现在就更容易看到您真正想要完成的任务

name=list(地图(lambda x:x['name'],yelp_餐厅))

请记住,
lambda x:
中的
x
是iterable
yelp\u餐厅的每个成员,因此
x
是一个
dict
。考虑到这一点,您正在使用对
name
的直接访问来提取所需内容。

能否显示原始数据结构,这可能是实现所需结果的一种更简单的方法。在最后一个示例中,您可以通过使用
operator.itemgetter('name')获得适度的加速
取代了
lambda
——但这是一个有点高级的主题。无论如何,对列表的理解更可取。@peterdegloper肯定是这样,但我不认为优化是或应该是正确的目标now@Eduardo我不是你的选民,我也不会假设谁是。如果我的回答被认为是居高临下,那不是我的本意,所以对此表示歉意front@Eduardo当前位置我看不出这个回答中有什么居高临下的意思。爱德华多:如果你想得到建议,那么这就是:接受当你发布代码时,任何答案都可能批评代码,这通常是答案的一部分。这既不是居高临下,也不是粗鲁无礼,而是具有教育意义。接受并欢迎批评,并本着它的意图接受它——帮助你提高。如果这不适合你,那么这个网站可能不适合你。