2017-10-03 1 views
-1

Für den Inhalt unten, wie bekomme ich "a_id" -Wert und seine "b_id" -Wert basierend auf "Name" Validierung.Konvertieren einer Liste von Dicts in ein einzelnes Wörterbuch

[ 
{ 
    "name": "name1", 
    "a_id": "12345", 
    "b_id": "0d687c94c5f4" 
}, 
{ 
    "name": "name2", 
    "a_id": "67890", 
    "b_id": "0d687c94c5f4" 
}, 
{ 
    "name": "name3", 
    "a_id": "23857", 
    "b_id": "9ec34be3d535" 
}, 
{ 
    "name": "name4", 
    "a_id": "84596", 
    "b_id": "9ec34be3d535" 
}, 
{ 
    "name": "name5", 
    "a_id": "d82ebe9815cc", 
    "b_id": null 
} 

]

Ich habe für zwei Werte wie

{result['a_id']: result['name'] for result in data} 

aber für den dritten Wert verwendet wird mir dies nicht tun lassen, wenn ich wie folgt verwenden.

{result['a_id']: result['name'], result['b_id']: result['name'] for result in data} 

Wie lautet die richtige Syntax?

+0

Können Sie zeigen ein Beispiel von dem, was Sie Ihre Ausgabe aussehen mögen? – CoryKramer

+0

Vielen Dank für Ihre Nachricht. Was COLDSPEED gepostet hat, ist was ich suche. Hatte Probleme mit Antwortbox und konnte nicht schnell posten, aber ich bekam die Antwort. – pylearn

Antwort

2

Ich denke, ein dict Verständnis mit einer verschachtelten Schleife den Trick tun sollten:

data = {result[k] : result['name'] for result in data for k in ('a_id', 'b_id')} 

Sie so viele Schlüssel hinzufügen können, wie Sie wollen. Wenn es mehr Sinn macht, erklärt Ihren Schlüssel außerhalb, in einer Variablen keys:

keys = ('a_id', 'b_id', ...) 
data = {result[k] : result['name'] for result in data for k in keys} 
+0

Danke für die Post. Du hast meine Frage tatsächlich beantwortet. Ich habe eine Frage zu der Ausgabe, die ich bekomme. wenn ich {result [ 'b_id']: Ergebnis [ 'name'] für Ergebnis in der Daten} Ich bin nur drei Werte statt 5. 0d687c94c5f4, 9ec34be3d535 und null bekommen. Wenn Sie bemerken, dass es doppelte "b_id" s gibt. Aber ich brauche diese, anstatt gefiltert zu werden. Tut mir leid, ich bin mir nicht sicher, ob es in Ordnung ist, weiter nach einer anderen Frage zu fragen, oder ich muss eine neue Frage stellen. – pylearn

+0

@pylearn Im Wesentlichen werden Sie nach einem Wörterbuch mit doppelten Schlüsseln gefragt. Leider ist das nicht möglich. Wenn Sie weitere Fragen haben, würde ich lieber Sie [diese zuerst schließen] (https://stackoverflow.com/help/someone-answers) und dann eine andere öffnen. Aber wenn Sie Fragen zu doppelten Schlüsseln haben, tut es mir leid, das ist einfach nicht möglich. –

Verwandte Themen