簡體   English   中英

從字典列表中的字典中提取特定值

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

許多解決方案在這里使用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']]
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_idproject-1鍵相對應的值。 [0]是字典值中第一個元素的列表索引。 ['name']也是一個鍵,但是字典位於列表的第一個元素中。 它為您提供所需的最終值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM