2016-10-14 3 views
2

Ich bin neu in Roboter und Python. Ich habe ein verschachteltes Wörterbuch, von dem ich Werte erhalten muss, aber ich kann nicht darauf zugreifen.Wie bekomme ich Werte aus verschachtelten Diktaten?

${result} = Get Info from_here=location mode=aggregate 
@{keys}= Get Dictionary Keys ${result} 
${robot_dict}= Create Dictionary 
:FOR ${key} IN @{keys} 
    \ Set To Dictionary ${robot_dict} ${key}=${result['${key}']} 
Log Many ${robot_dict} 
######Output from robot_dict is: 
#{'Name1': 
#  {'nickname': 
#   {'Name': 'Name1', 'FirstName': 'Full', 'Boy': 
#    {'Age': 'N/A', 'Single': '0'}, 
#    'Girl': 
#    {'Height': '229057', 'Weight': 'N/A'} 
#   } 
#  }, 
#'Name2':{'nickname': 
#   {'Name': 'Name2', 'FirstName': 'Full', 'Boy': 
#    {'raw_pkt_count': '229059', 'Age': 'N/A'}, 
#    'Girl': 
#    {'Height': '0', 'Weight': 'N/A'} 
#   } 
#  } 
#} 
############# 

dies versucht:

${current_key} = Get Dictionary Keys ${robot_dict[Name1][nickname][Girl][Height]}  
######Error: Resolving variable '${robot_dict[Name1][nickname][Girl][Height]}' failed: KeyError: 0   

Und:

${current_key} = Get Dictionary Keys ${robot_dict} Name1.nickname.Girl.Height 
#######Error: Dictionary does not contain key Name1.nickname.Girl.Height 

Antwort

2

Wenn Sie extended variable syntax verwenden, müssen Sie den Code behandeln, als ob es Python waren. Da die Schlüssel Zeichenfolgen sind, müssen sie richtig zitiert werden. Hier ist der relevante Teil der Dokumentation:

  1. Der Ausdruck in geschweiften Klammern wird als Python-Ausdruck ausgewertet, so dass der Basisvariablenname mit seinem Wert ersetzt wird. Wenn die Auswertung aufgrund einer ungültigen Syntax fehlschlägt oder das Attribut abgefragt nicht vorhanden ist, wird eine Ausnahme ausgelöst, und der Test schlägt fehl.
${current_key} = Get Dictionary Keys ${robot_dict['Name1']['nickname']['Girl']['Height']}  
Verwandte Themen