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']]
只是澄清一下,你没有一个列表,这是一个字典列表是的,你是对的。谢谢你的澄清只是一个澄清,你没有列表,这是一个字典列表是的,你是对的。谢谢你的澄清