2017-03-10 2 views
1

Ich habe eine json Antwort:Python-select eindeutige Schlüsselwerte von JSON-Objekt

{ 
    "data": [ 
    { 
    "id": "1", 
    "name": "Tom", 
    "age": "24", 
    }, 
    { 
    "id": "2", 
    "name": "Nick", 
    "age": "45", 
}, 
{ 
    "id": "3", 
    "name": "Harry", 
    "age": "18", 
}, 
{ 
    "id": "1", 
    "name": "Tom", 
    "age": "29", 
} 
], 
"count": 4 
} 

und ich möchte Ausgang so sein:

output[ 
{ 
    "id": "1", 
    "name": "Tom", 
    "age": "24", 
}, 
{ 
    "id": "2", 
    "name": "Nick", 
    "age": "45", 
}, 
{ 
    "id": "3", 
    "name": "Harry", 
    "age": "18", 
} 
] 

Was ich will, ist lade alle Wörterbuchobjekte mit eindeutigen Namen ab. Ich weiß, wie man eindeutige Namen holt, aber ich möchte auch id und age holen. Es gibt zwei Wörterbuchobjekte, die nameTom entsprechen. Ich möchte einen in meiner Ausgabe behalten.

Dies ist der Arbeits Code unique zu holen:

size=len(data["data"]) 
uniqueNames = []; 
for i in range(0,size,1): 
    if(data["data"][i]["name"] not in uniqueNames): 
     uniqueNames.append(data["data"][i]["name"]); 
print uniqueNames 
+1

Ich habe einige Code, so dass Sie auch die schlechten Antworten bekommen. Es druckt sie in der Reihenfolge. Wenn Sie meine Antwort als Lösung markieren könnten, wäre das großartig, danke. Wenn Sie weitere Hilfe benötigen, kommentieren Sie einfach. – Neil

Antwort

1

Hier ist, wie Sie Ihren Code beheben sollte: Einfach Ihre Registrierung von Namen halten und dann einen Algorithmus für die Führung der restlichen Informationen hinzuzufügen. Für mich habe ich ein weiteres Array zum Speichern des gesamten Datenobjekts erstellt, das eindeutige Namen hat, genannt returnValue. Und wenn ein eindeutiger Name vorhanden ist, wird das gesamte Datenobjekt auf returnValue gesetzt. Dann druckt es es aus (oder gibt es zurück, wenn Sie es in eine Funktion verwandeln).

returnValue = [] 
size=len(data["data"]) 
uniqueNames = [] 
for i in range(0,size,1): 
    if(data["data"][i]["name"] not in uniqueNames): 
     uniqueNames.append(data["data"][i]["name"]) 
     returnValue.append(data["data"][i]) 
print returnValue 

Wegen Autors Frage:

returnValue = [] 
badValues = [] 
size=len(data["data"]) 
uniqueNames = [] 
for i in range(0,size,1): 
    if(data["data"][i]["name"] not in uniqueNames): 
     uniqueNames.append(data["data"][i]["name"]) 
     returnValue.append(data["data"][i]) 
    else: 
     badValues.append(data["data"][i]) 
print "Good ones: " 
print returnValue 
print "Bad ones: " 
print badValues 
+0

Es hat funktioniert! Danke –

2

Hier gehen Sie,

import json 
jsonFile = open('aa.json', 'r') 
data = json.load(jsonFile) 

size=len(data["data"]) 
print size 
values = []; 
uniqueNames = []; 
for i in data["data"]: 
    if(i["name"] not in uniqueNames): 
     uniqueNames.append(i["name"]); 
     values.append(i) 
jsonFile.close() 
+0

Es hat funktioniert! Danke –

+0

Plz akzeptiere die Antwort :) – MSD

Verwandte Themen