Je voulais parfois extraire les valeurs de dict et list en utilisant des chaînes séparées par des points telles que a.b
et c.d.2.e
, alors je les ai écrites.
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
est maintenant une variable pour mettre la valeur actuelle. La valeur initiale est l'argument dict ou list. Divisez le chemin par un point et tournez-le par pour. Échangez la valeur de now jusqu'à la fin de pour et enfin de retour.
Au fait, je ne m'attends pas à ce que le nom de la clé ait un point.
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}]
Recommended Posts