Ich habe hier ein Elternwörterbuch, das eine Sammlung von zwei Wörterbüchern X
und Y
ist. Gespeichert mit dem DictReader
des csv-Moduls.Elemente aus mehreren geordneten Wörterbüchern extrahieren, die in einem dict-Objekt gespeichert sind
Rufen wir dieses Wörterbuch example_dicto
, das zwei geordnete Wörterbücher enthält. Zur Klarstellung von dem variablen Explorer in Spyder dies wie folgt aussieht:
Name Type Size Value
example_dict dict 2 {'X':OrderedDict, 'Y': OrderedDict}
Ok, damit ich weiß, X
und Y
sind die wichtigsten Schlüssel hier. Aber ich möchte Werte durch diese zwei Wörterbücher nachschlagen. Angenommen, es gibt eine Spalte für X
und Duration (min)
für Y
und ich möchte meine Funktion lesen diese Spalten abhängig von einer Zeile und geben Sie ihre Werte zurück.
def info_from_row(row, dictionary):
if dict == 'X':
duration = float(row['Duration'])
else:
duration = float(row['Duration (min)'])
return duration
Als ich info_from_row
nennen, Python gibt die üblichen KeyError, wo die Zurückverfolgungs sagt mir, dass keines dieser ‚Schlüssel‘ existieren. Also im Grunde muss ich ein Wörterbuch, das eine Sammlung von Wörterbüchern ist Index und dann Index-Schlüssel innerhalb ihrer "Haupt" Schlüssel X und Y, um einen Wert zurückzugeben. Wie indexiere ich sie, da die übliche Methode dict['key']
mir einen Fehler gibt und 'Duration' in X
False
zurückgibt.
Weitere Klärung sehen diese Wörterbücher wie folgt aus:
print(example_dict)
{'X': OrderedDict([('ID', '123456'), ('Duration', '54941')]),
'Y': OrderedDict([('ID', '789101'), ('Duration (min)', '7869')])}
Wie rufen Sie diese Funktion auf? Welche Argumente gehen Sie an? –
Ich bekomme Zweifel an der Grammatik, diese Funktion auch aufzurufen. Der einfache 'info_from_row (5, 'X')' gibt mir diesen Fehler. Das ist der Wert für den fünften Wert der 'Duration'-Spalte von' X'. –
'' example_dict ['X'] ['Dauer'] '' gibt '' '54941''' zurück.Wenn Sie '' info_from_row (example_dict, 'X') '' aufrufen, dann ist '' row ['Duration'] '' '' exampld_dict ['Duration'] '', was in der Tat ein '' KeyError' ist '. Sie sollten etwas wie "row [dict] ['Duration'] '' und '' row [dict] [' Duration (min) '] '' verwenden. (Rufen Sie auch nicht die Variablen '' dict'' auf, es ist ein eingebauter Python ...). –