Ich wollte manchmal die Werte von dict und list mit durch Punkte getrennten Zeichenfolgen wie "a.b" und "c.d.2.e" abrufen, also habe ich sie geschrieben.
def get_item(src, path):
now = src
for i in path.split('.'):
if type(now) is list:
now = now[int(i)]
else:
now = now[i]
return now
Jetzt ist eine Variable, um den aktuellen Wert zu setzen. Der Anfangswert ist das Argument dikt oder Liste. Teilen Sie den Pfad durch einen Punkt und drehen Sie ihn für. Tauschen Sie den Wert von jetzt bis zum Ende von für und kehren Sie schließlich zurück.
Ich erwarte übrigens nicht, dass der Schlüsselname einen Punkt hat.
my_dict = {
'a': {
'b': 'hello'
},
'c': {
'd':[
{'e': 3},
{'e': 4},
{'e': 5},
{'e': 6},
]
}
}
print(get_item(my_dict, 'a.b'))
print(get_item(my_dict, 'c.d.3.e'))
print(get_item(my_dict, 'c.d'))
# hello
# 6
# [{'e': 3}, {'e': 4}, {'e': 5}, {'e': 6}]