2017-12-07 1 views
1

Es gibt eine Liste von dict wie unten, mit jedem dict enthält zwei Schlüssel.Liste von Subset-Dict aus vorhandener Liste von Dict in Python erhalten

original_list = [ 
    { 
     'label': 'First Name', 
     'value': 'Leo', 
    }, 
    { 
     'label': 'Last Name', 
     'value': 'Lee', 
    }, 
    { 
     'label': 'Gender', 
     'value': 'Male', 
    }, 
    { 
     'label': 'Age', 
     'value': 35, 
    }, 
    { 
     'label': 'Telephone', 
     'value': '13788995566', 
    } 
]     

Ich möchte mit nur einer Taste, um eine neue Liste von dict bekommen ('label') in der dict.

# expecting output like below 
new_list = [ 
    { 
     'label': 'First Name' 
    }, 
    { 
     'label': 'Last Name' 
    }, 
    { 
     'label': 'Gender' 
    }, 
    { 
     'label': 'Age' 
    }, 
    { 
     'label': 'Telephone' 
    } 
] 

Ich kenne einen Weg, um zu umgehen.

new_list = [{'label': d['label']} for d in original_list] 
print(new_list) 

Gibt es irgendeine Methode bequemer?

Wenn die original_list Daten in einem Pandas DataFrame ist, wie bekomme ich das gleiche Ergebnis?

Antwort

1

Wenn Eingang DataFrame wählen Spalten für die Ausgabe von Teilmenge [[]] und rufen to_dict mit Parameter orient='records':

df = pd.DataFrame(original_list) 
print (df) 
     label  value 
0 First Name   Leo 
1 Last Name   Lee 
2  Gender   Male 
3   Age   35 
4 Telephone 13788995566 

print (df[['label']].to_dict(orient='records')) 
[{'label': 'First Name'}, 
{'label': 'Last Name'}, 
{'label': 'Gender'}, 
{'label': 'Age'}, 
{'label': 'Telephone'}] 
+1

Vielen Dank. Ich kenne nur die Option "Orient". –

+1

Wenn das Label nicht eindeutig ist, können wir das [{'Label': Label} für Label in df ['Label']. Unique()] – newbie

1

Genau wie Ihr! Listen Verständnis, auch etwas länger :) Aber auf jeden Fall ein weiterer Ansatz :)

[{e: i} for d in original_list for e,i in d.items() if e =='label'] 
+0

Dies ist gut, nur einmal Schlüssel 'Label' erwähnen müssen. –

Verwandte Themen