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?

War es hilfreich?

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())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top