Python 从字典列表的字典中提取特定值

Python 从字典列表的字典中提取特定值,python,list,dictionary,extract,sublist,Python,List,Dictionary,Extract,Sublist,我有这样的数据集: {'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}], 'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]} 我想提取的是所有人的名字: ['john','steve','jack','anna'] 如何使用python获取这些列表 my_dict = { 'project-1': [{'id':'1'

我有这样的数据集:

{'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
 'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]}
我想提取的是所有人的名字:

['john','steve','jack','anna']
如何使用python获取这些列表

my_dict = {
    'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
    'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]
}
您可以使用列表来获取子列表(即原始词典的值)中包含的每个词典的
name
字段

您可以使用列表来获取子列表(即原始词典的值)中包含的每个词典的
name
字段


在dict上迭代,然后在当前dict的值上迭代:

for d_ in d.values():
    for item in d_:
        print item['name']
或者在理解上

names = [item['name'] for d_ in d.values() for item in d_]
print names
['john', 'steve', 'jack', 'anna']

在dict上迭代,然后在当前dict的值上迭代:

for d_ in d.values():
    for item in d_:
        print item['name']
或者在理解上

names = [item['name'] for d_ in d.values() for item in d_]
print names
['john', 'steve', 'jack', 'anna']
这应该可以做到

d = {'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
     'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]}
result = list()
for key in d:
    for x in d[key]:
        result.append(x['name'])
这应该可以做到

d = {'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
     'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]}
result = list()
for key in d:
    for x in d[key]:
        result.append(x['name'])
['project-1']
获取字典
name\u id
中与
project-1
键对应的值<代码>[0]是字典值中第一个元素的列表索引
['name']
也是一个键,但在列表的第一个元素中是字典的键。它将为您提供所需的最终值


['project-1']
获取字典
name\u id
中与
project-1
键对应的值<代码>[0]是字典值中第一个元素的列表索引
['name']
也是一个键,但在列表的第一个元素中是字典的键。它为您提供了所需的最终值。

许多解决方案在这里使用
双循环尝试相同的旧方法:

以下是不同的方法:

不带任何回路的单线解决方案:

您可以将lambda函数与映射一起使用:

data={'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
 'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]}



print(list(map(lambda x:list(map(lambda y:y['name'],x)),data.values())))
输出:

[['john', 'steve'], ['jack', 'anna']]

许多解决方案在这里尝试相同的老方法,使用
two-loop

以下是不同的方法:

不带任何回路的单线解决方案:

您可以将lambda函数与映射一起使用:

data={'project-1': [{'id':'1','name':'john'},{'id':'20','name':'steve'}],
 'project-2': [{'id':'6','name':'jack'},{'id':'42','name':'anna'}]}



print(list(map(lambda x:list(map(lambda y:y['name'],x)),data.values())))
输出:

[['john', 'steve'], ['jack', 'anna']]

只是澄清一下,你没有一个列表,这是一个字典列表是的,你是对的。谢谢你的澄清只是一个澄清,你没有列表,这是一个字典列表是的,你是对的。谢谢你的澄清