从字典列表中提取特定值

时间:2017-11-22 08:31:07

标签: python list dictionary extract sublist

我有这样的数据集:

IOException

我想要提取的是所有人的名字:

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

如何使用python获取这些列表?

5 个答案:

答案 0 :(得分:2)

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

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

>>> [d.get('name') for sublists in my_dict.values() for d in sublists]
['john', 'steve', 'jack', 'anna']

答案 1 :(得分:2)

迭代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']

答案 2 :(得分:1)

这应该这样做。

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'])

答案 3 :(得分:1)

许多解决方案使用two loop尝试相同的旧方法:

这是不同的方法:

  

没有任何循环的一行解决方案:

您可以将lambda函数与map:

一起使用
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']]

答案 4 :(得分:0)

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

name_id['project-1'][0]['name'] = 'john'
name_id['project-1'][1]['name'] = 'steve'
name_id['project-2'][0]['name'] = 'jack'
name_id['project-2'][1]['name'] = 'anna'

['project-1']获取与字典project-1中的name_id键对应的值。 [0]是字典值中第一个元素的列表索引。 ['name']也是一个键,但是列表的第一个元素中的字典。它为您提供了您想要的最终价值。