2017-04-12 6 views
-1

Also, wenn I Wörterbuch drucken es gibt:Erhalten Sie spezifischen Wert in verschachtelten Python Wörterbuch

u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'}, {u'Value': 'hello world', u'Key': 'Name'}, {u'Value': '123 Street', u'Key': 'Address'}] 

Ich brauche Wert von Key 'Name' heißt "Hallo Welt"

ich versucht, dieses:

for t in Tags: 
    print(t["Name"]) 

aber erhalten Fehler:

KeyError: 'Name' 
+1

'Name' ist value! Sie müssen den Schlüssel – RaminNietzsche

+0

verwenden u'Value ':' Hallo Welt '-> t [' Wert '] wird Ihnen geben. Es ist falsch, Name zu verwenden –

Antwort

1

'Name' hier ist kein Schlüssel, es ist ein Wert. Ihre Wörterbücher haben alle Schlüssel von u'Key' und u'Value', die etwas verwirrend sein könnten.

obwohl Dies sollte für Ihr Beispiel arbeiten:

for t in Tags: 
    if t['Key'] == 'Name': 
     print t['Value'] 
2

Im Wörterbuch zeigt der Eintrag Tags auf eine Liste von Objekten mit Schlüssel und Wert als verschachtelte Einträge. Daher ist der Zugriff nicht direkt und erfordert eine Suche nach dem Schlüssel.

d = {u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'}, 
       {u'Value': 'hello world', u'Key': 'Name'}, 
       {u'Value': '123 Street', u'Key': 'Address'}]} 

name = next((v for v in d['Tags'] if v['Key'] == 'Name'), {}).get('Value') 
0

Wenn Sie einen „Schlüsselname“ finden wollen: Es kann mit einer einfachen Liste Verständnis getan werden

findYourWord ='hello world' 

for dictB in dictA[u'Tags']: 
    for key in dictB: 
     if dictB[key]== findYourWord: 
      print(key) 

Hoffnung diese Ihnen helfen. Einen schönen Tag noch.

0

In Ihrem inneren Wörterbücher sind die einzigen Schlüssel ‚Schlüssel‘ und ‚Wert‘. Versuchen Sie, eine Funktion, um den Wert des Schlüssels zu finden Sie wollen, versuchen Sie:

def find_value(list_to_search, tag_to_find): 
    for inner_dict in list_to_search: 
     if inner_dict['Key'] == tag_to_find: 
      return inner_dict['Value'] 

Jetzt:

In [1]: my_dict = {u'Tags': [{u'Value': 'stone', u'Key': 'primary-key'}, {u'Value': 'hello world', u'Key': 'Name'}, {u'Value': '123 Street', u'Key': 'Address'}]} 


In [2]: find_value(my_dict['Tags'], 'Name') 
Out[2]: 'hello world' 
Verwandte Themen