2016-07-18 9 views
-5

Ich habe Wörterbuch wie,Wie erhält man einen bestimmten Wert im Wörterbuch Python?

"countries":{ 
    "98":{ 
     "uid":98, 
     "title":"Switzerland" 
     } 
}  

Ich will nur Wert von "Titel" erhaltenjson Decodierungsverfahren.

Hinweis: Der Wert von "98" ist dynamisch und ändert sich daher jedes Mal.

Wie kann ich das erreichen?

+2

Wenn Sie eine Vari haben in der Lage, 'x' zu halten, was' '98' 'darstellen soll, dann' Länder [x] ["title"] 'oder möglicherweise' mydict ["countries"] [x] ["title"] 'wenn das tatsächlich was ist du hast. Wenn nicht, dann kann ich nicht sagen, was Sie fragen. – khelwood

+0

Können Sie Code in JSON-Entschlüsselungsmethode bereitstellen? –

+2

Was hast du probiert? (auch das von Ihnen gepostete Snippet ist kein wirklich gültiges JSON) – Kendas

Antwort

1

Wenn Sie meinen, dass Sie mehrere Felder wie 98 haben aber alle einen Titel enthalten, können Sie dies tun:

titles = list() 
for k in my_dict["countries"].keys(): 

    if my_dict["countries"][k].has_key("title"): 

     titles.append(my_dict["countries"][k]["title"]) 

oder, wie in den Kommentaren vorgeschlagen

try: 
    titles = [item['title'] for item in dictName['countries']] 
except KeyError: 
    print("no countries/title") 
1

Ich gehe davon aus, dass das "Wörterbuch", das Sie bereitstellen, eine Zeichenfolge im JSON-Format ist, und dass Sie es in ein Python-Objekt (Wörterbuch) THEN Zugriff Titel dekodieren möchten.

Wenn das der Fall ist, ist das JSON-Modul Ihr Freund! Dokumentation: https://docs.python.org/3/library/json.html

Pseudo-Code

import json 

# This is your JSON string 
json_str = "......." 

# This could be a dictionary, depending on the structure of the input JSON string 
countries = json.loads(json_str) 

# access! 
target_uid = "98" 

# This should print Switzerland 
print(countries["countries"][target_uid]["title"]) 
+1

Nach den Daten 'target_uid' muss eine Zeichenkette sein. – Matthias

+0

@Matthias Guter Fang. Aktualisiert. Vielen Dank! –

Verwandte Themen