2017-05-15 1 views
-1

Ich schaute durch andere Antworten, aber ich verstehe nicht vollständig. Es gibt keine doppelten Werte.Holen Elternschlüssel in einem verschachtelten Wörterbuch

{ "type":"champion", 
     "data":{ 
      "89":{ 
       "title":"the Radiant Dawn", 
       "name":"Leona" 
       }, 
      "110":{ 
        "title":"the Arrow of Retribution", 
        "name":"Varus" 
       } 
      } 
} 

was ich habe, bin ich mir nicht sicher, wie es weitergeht. In der eigentlichen dict gibt es mehr Informationen als nur Titel und Schlüssel

championID = 0 
    for key, value in championData["data"].items(): 
     for childkey,childvalue in value.items(): 
      # 
    champion = getChamp(championID) 

ich eingeben möchten einen Namen und haben es die ID zurückkehren (die Zahl, 89 und 110 sind aufgeführt). Zum Beispiel würde die Eingabe Leona zurückkehrt 89.

(Sorry, ich am Anfang einen besseren Job zu fragen, die Frage getan haben könnte: "v)

+0

Es sieht so aus, als ob Sie möchten, dass wir etwas Code für Sie schreiben. Während viele Benutzer bereit sind, Code für einen in Not geratenen Coder zu produzieren, helfen sie normalerweise nur, wenn das Poster bereits versucht hat, das Problem selbst zu lösen. Eine gute Möglichkeit, diesen Aufwand zu demonstrieren, besteht darin, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Konsolenausgabe, Trace-Backs usw.), einzubeziehen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Überprüfen Sie die [FAQ] und [fragen]. – MooingRawr

+1

Was ist die erwartete Ausgabe? – luoluo

+0

Warum willst du das überhaupt machen? "dict" soll nicht so verwendet werden. Wenn Sie iterieren möchten, können Sie 'for k, v in mydict.iteritems() verwenden' – DineshKumar

Antwort

0

Dies funktioniert:

championData = {"type": "champion", "data": { 
    "89": { 
     "title": "the Radiant Dawn", 
     "name": "Leona" 
    }, 
    "110": { 
     "title": "the Arrow of Retribution", 
     "name": "Varus" 
    } 
}} 

name = "Leona" 
data = championData['data'] 
for championId in data: 
    if(data[championId]['name']) == name: 
     print(championId) 

Die Ausgabe ist: 89

+0

Wow, ich war wirklich überkompliziert es. Das ist, was ich gesucht habe, danke! – wrxryuu

Verwandte Themen