Zersetzung und Decodierung von verschachtelten Wörterbuch / json
-
28-09-2019 - |
Frage
In meiner app ich eine Verbindung zu einem Server, der einige json Stil Unicode-String ähnelt Wörterbuch der Wörterbücher zurückgibt. Als Ergebnis würde Ich mag einen nivelliert Wörterbuch mit id
als Schlüssel und Unicode-Wert wie folgt erhalten:
{'1': u'autos','3': u'cities'}
Also habe ich die Antwort laden mit in json-Modul aufgebaut:
>>> jsonData = json.loads(data)
>>> jsonData
{u'1': {u'id': u'1', u'name': u'autos'}, u'3': {u'id': u'3', u'name': u'cities'}, u'2': {u'id': u'2', u'name': u'business'},}
>>> type(jsonData)
<type 'dict'>
Sie können das zurückgegebene Objekt hier sehen. Dann sollte ich es zersetzen loswerden des Mutter Wörterbuch zu erhalten. Und schließlich die ids kodieren. Ich habe zwei Methoden gefunden, wie die Codierung zu tun. One:
>>> import unicodedata
>>> unicodedata.normalize('NFKD', data).encode('ascii','ignore')
und zweite:
>>> data.encode('ascii','ignore')
Wie soll ich diese Aufgabe tun, vor allem die Zersetzung?
Lösung
Dies sollte funktionieren:
outputdata = {}
for id, stuff in jsonData.iteritems():
outputdata[id.encode("ascii")] = stuff[u"name"]
Sie können auch einen Generator Ausdruck verwenden, wie in dugres' Antwort.
Andere Tipps
decomp=dict((v['id'], v['name']) for v in jsondata.values())