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