获取python词典列表中某个键的所有值

msh*_*eeb 2 python dictionary

我在Python中有一个列表,其中包含一个"嵌套"字典.所以我的列表如下所示:

List = [{'entry' : {'Name' : 'Smith', 'Age' : 25}}, {'entry' : {'Name' : 'Mary', 'Age' : 28}}]
Run Code Online (Sandbox Code Playgroud)

我想在不使用循环的情况下从列表中返回键"Name"的所有值.因此,如果我使用循环它可以工作,因为这适用于列表的单个条目.例如:List[0]['entry']['Name']工作并返回'Smith'.但是,我需要这样的东西List[:]['entry']['Name']应该返回一个List,其中包含条目'Smith'和'Mary'.这可能吗?

Moi*_*dri 5

您可以使用lambda表达式map()如下:

>>> map(lambda d: d['entry']['Name'], List)
['Smith', 'Mary']
Run Code Online (Sandbox Code Playgroud)

即使你没有在这里看到循环,但内部map()也遍历列表.您不能跳过遍历列表以实现您想要的.

更好的方法是使用列表理解为:

>>> [d['entry']['Name'] for d in List]
['Smith', 'Mary']
Run Code Online (Sandbox Code Playgroud)

或者,如果嵌套字典中可能存在任何键丢失,则可以将过滤器添加为:

>>> [d['entry']['Name'] for d in List if 'entry' in d and 'Name' in d['entry']]
['Smith', 'Mary']
Run Code Online (Sandbox Code Playgroud)