AttributeError: Das Objekt 'unicode' hat beim Analysieren von JSON-Wörterbuchwerten keine Attributwerte

8

Ich habe das folgende JSON-Wörterbuch:

%Vor%

Wie Sie sehen können, sind einige der Wörterbuchwerte in Listen enthalten. Ich versuche, alle Werte von diesem Objekt wie folgt zu erhalten:

%Vor%

Dies druckt die Wörterbuchschlüssel:

%Vor%

Wenn was ich eigentlich will, sind die Werte. Ich habe versucht, die Zeile print mysubvalue durch print mysubvalue.values() zu ersetzen, dies verursacht jedoch den folgenden Fehler:

%Vor%

Ich nehme hier an, dass ich nicht json.loads(mysubdict) verwenden muss, um mir den Zugriff auf die .values() -Funktion zu ermöglichen. Wenn ja, bin ich mir nicht sicher, warum ich diesen Fehler bekomme.

Kann jemand helfen?

Danke

    
gdogg371 16.01.2015, 19:16
quelle

2 Antworten

8

Wenn Sie über das Wörterbuch selbst iterieren (für myvalue in myjsonobject), durchlaufen Sie die Schlüssel des Wörterbuchs. Wenn Sie mit einer for-Schleife loopen, ist das Verhalten gleich, unabhängig davon, ob Sie die dict (myjsonobject) selbst, myjsonobject.keys() oder myjsonobject.iterkeys() durchlaufen haben. dict.iterkeys() ist im Allgemeinen vorzuziehen, weil es explizit und effizient ist:

for myvalue in myjsonobject.iterkeys():

    
Ranvijay Sachan 16.01.2015, 20:49
quelle
1

Sie durchlaufen die Schlüssel des JSON-Wörterbuchs und rufen dann für jeden Schlüssel die Funktion .values ​​() auf.

%Vor%

iteriert über die Schlüssel. Wenn Sie also zu einem Schlüssel gelangen, der eine Zeichenkette ist, sagen wir,'period ': 16, wird' period'.values ​​() ausgegeben, was diesen Fehler ausspuckt, da die Zeichenklasse keine .values ​​().

Wenn Sie das gesamte JSON-Wörterbuch auf eine beliebige Tiefe reduzieren möchten, würde ich einen rekursiven Ansatz vorschlagen.

    
Andrew 16.01.2015 19:26
quelle

Tags und Links