从字典列表的字典中提取特定值
extract specific value from dictionary of list of dictionary
我有这样的数据集:
{'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
字段(即在原始字典的值中)。
>>> [d.get('name') for sublists in my_dict.values() for d in sublists]
['john', 'steve', 'jack', 'anna']
遍历字典,然后遍历当前字典的值:
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'])
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']
获取字典name_id
中project-1
键对应的值。 [0]
是字典值中第一个元素的列表索引。 ['name']
也是一个键,但是在列表的第一个元素中的字典。它给你你想要的最终价值。
许多解决方案在这里使用 two loop
尝试相同的旧方法:
这是不同的方法:
One line solution without any 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']]
我有这样的数据集:
{'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
字段(即在原始字典的值中)。
>>> [d.get('name') for sublists in my_dict.values() for d in sublists]
['john', 'steve', 'jack', 'anna']
遍历字典,然后遍历当前字典的值:
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'])
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']
获取字典name_id
中project-1
键对应的值。 [0]
是字典值中第一个元素的列表索引。 ['name']
也是一个键,但是在列表的第一个元素中的字典。它给你你想要的最终价值。
许多解决方案在这里使用 two loop
尝试相同的旧方法:
这是不同的方法:
One line solution without any 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']]