2017-09-14 2 views
-1

Ich fange gerade an, Django und Python zu lernen ... Es ist 2 Monate her. Ich mache eines meiner eigenen persönlichen Projekte und ich habe einen Abschnitt, in dem ich einen Webservice abfrage und das Ergebnis an die Vorlagen zurückgebe.Schleife in einem Wörterbuch Python

Der Webservice gibt ein Wörterbuch wie unten beschrieben zurück.

x = {'ID':[{ 
    'key-1': 'First Name', 
    'key-2': 'John' 
},{ 
    'key-1': 'Last Name', 
    'key-2': 'Doe' 
},{ 
    'key-1': 'Age', 
    'key-2': '25' 
}] 

Ich erwarte die Liste innerhalb des Wörterbuch iterieren und mein eigenes Wörterbuch, wie die unten erstellen:

d = {'First Name': 'John', 'Last Name': 'Doe', 'Age': '25' }

Ich bin nicht sicher, was ich bin fehlt, kann mir bitte jemand helfen mit lernen, wie man mein Wörterbuch baut?

+1

Können Sie zeigen, was Sie bisher versucht haben, und über die spezifischen Probleme sprechen, die Sie kennengelernt haben? – pvg

+0

Ich versuchte genau das, was jemand hier erklärt ... https://stackoverflow.com/questions/18289678/python-quoteting-through-a-dictionary-with-list-values ​​ Aber es ist nicht das gleiche Ich schaue auf ... – ppv

+0

Wenn Ihr äußeres Diktat 'x' genannt wurde, tun Sie einfach' {el ['key-1']: el ['Schlüssel-2'] für el in x ['ID']} ' –

Antwort

0

Caveat Achten Sie auf Bestellregeln für values Methode für Wörterbücher.

Bestellregeln 2.x documentation und 3.x documentation.

EDIT2:

Um eine Seltsamkeit mit Wörterbuch Bestellung zu verhindern und die vorgesehene Lösung, wickeln Sie Ihre Daten in ein OrderedDict:

from collections import OrderedDict 

x = {'ID':[OrderedDict({ 
     'key-1': 'First Name', 
     'key-2': 'John' 
     }),OrderedDict({ 
     'key-1': 'Last Name', 
     'key-2': 'Doe' 
     }),OrderedDict({ 
     'key-1': 'Age', 
     'key-2': '25' 
     })]} 

dict() ist eine nette Option für so etwas wie dieses:

d = dict(each.values() for each in x['ID']) 

Ausgabe:

{'Age': '25', 'First Name': 'John', 'Last Name': 'Doe'} 
1

Versuchen Sie ein Diktatverständnis und erstellen Sie ein neues Wörterbuch mit key-1 as the key and Schlüssel-2` als Wert.

x = {'ID':[{ 
    'key-1': 'First Name', 
    'key-2': 'John' 
},{ 
    'key-1': 'Last Name', 
    'key-2': 'Doe' 
},{ 
    'key-1': 'Age', 
    'key-2': '25' 
}]} 


print({el['key-1']: el['key-2'] for el in x['ID']}) 

Ergebnis

{ 'Alter': '25', 'Vorname': 'John', 'Nachname': 'Doe'}

Verwandte Themen