2016-04-24 13 views
0

Ich habe ein Hauptdikt mit einer bestimmten Anzahl von Schlüsseln e.i.Übertragung eines Schlüssels und eines entsprechenden Wertes von einem Diktat zum anderen

dict1 = {NAME: John, Second_Name: Doe} 

Ich habe eine Reihe dieser dicts und alle von ihnen in einer Liste enthalten sind. Gibt es eine Möglichkeit, diese Liste durchzulaufen und eine Liste mit Wörterbüchern zu erstellen, die z. B. nur den Schlüssel NAME und den entsprechenden Wert enthalten? Gibt es einen einfachen Weg, dies zu tun?

PS: Ich benutze dict1 als ein Beispiel wie in meinem Programm Ich arbeite mit dicts mit viel mehr Tasten.

+0

Welchen Wert hat 'carregamento [" geonames "]'? – ForeverWintr

+0

ForeverWintr Ich dachte über das Problem nach. Die Liste mit den Diktaten wurde in einer Liste erstellt, so dass das Programm diese Hilfe aufwarf. Danke für all die Hilfe für Sie und @zondo –

Antwort

1

würde ich eine Liste Verständnis verwenden:

[{'NAME': d['NAME']} for d in dictionaries] 

Das erhöhen wird eine KeyError wenn NAME nicht gefunden wird:

list_of_dicts = [ 
    {'NAME': 'John', 'Second_Name': 'Doe'}, 
    {'NAME': 'Tim', 'Second_Name': 'Doh'}, 
    {'NAME': 'Mark', 'Second_Name': 'Dough'}, 
] 

names_only = [{'NAME': d['NAME']} for d in list_of_dicts] 
+0

Das scheint eine gute Antwort. Wenn ich eine Schlüsselmenge anstatt nur einer hinzufügen möchte, weiß ich dann, welche Änderungen ich an diesem Code vornehmen soll? –

+1

@ NunoChicória: Gleiche Idee. Tu so, als wärst du in einer "for" -Schleife. Sie können beliebig lange ein Wörterbuch erstellen. Du könntest '{'NAME': d ['NAME'], 'ZweiterName': d ['ZweiterName']}' – zondo

+0

10 @zondo Ich erhalte diesen Fehler (TypeError: Listenindizes müssen ganze Zahlen sein, nicht str). Weißt du, wie könnte ich das umgehen? –

0

Sie ein list comprehension verwenden können. Sie können eine Standard stattdessen wie folgt verwenden:

[{'NAME': d.get('NAME', 'unknown')} for d in dictionaries] 

für jedes Wörterbuch, d, in dictionaries, es entsteht ein Wörterbuch mit einem einzigen Schlüssel, NAME, die den Wert von d['NAME'] hat.

Verwandte Themen