Maison >développement back-end >Tutoriel Python >Comment puis-je accéder et modifier efficacement les éléments du dictionnaire imbriqués à l'aide d'une liste de clés en Python ?
Accès aux éléments de dictionnaire imbriqués via une liste de clés : exploration d'une structure imbriquée
Les structures de données complexes telles que les dictionnaires nécessitent souvent des méthodes efficaces pour parcourir et manipuler leur contenu imbriqué. Un défi courant consiste à accéder à des éléments spécifiques au sein d'une structure imbriquée en fonction d'une liste de clés fournie.
Approche existante
Une méthode pour résoudre ce problème consiste à naviguer de manière itérative dans le dictionnaire, en utilisant chaque touche de la liste pour localiser l’élément souhaité. Cette approche, cependant, peut devenir de plus en plus verbeuse et sujette aux erreurs pour les structures profondément imbriquées.
Solution améliorée utilisant Réduire
Une solution plus élégante et plus efficace implique de tirer parti de la réduction de Python () fonction. réduire() applique de manière itérative une opération spécifiée à une séquence d’éléments, réduisant la séquence à une valeur unique. En utilisant Operator.getitem comme opération, nous pouvons parcourir le dictionnaire, en utilisant chaque clé de la liste pour récupérer la valeur associée.
from functools import reduce # forward compatibility for Python 3 import operator def get_from_dict(dataDict, mapList): return reduce(operator.getitem, mapList, dataDict)
Définition d'une valeur
Le même principe peut être appliqué pour modifier des valeurs au sein du dictionnaire. En utilisant get_from_dict pour localiser le dictionnaire parent et la clé finale, nous pouvons attribuer directement la nouvelle valeur.
def set_in_dict(dataDict, mapList, value): get_from_dict(dataDict, mapList[:-1])[mapList[-1]] = value
Fonctions supplémentaires
Développement de la fonctionnalité principale, nous pouvons créer des fonctions supplémentaires pour supprimer et manipuler les structures imbriquées. Par exemple, une fonction pour supprimer une clé :
def del_by_path(root, items): del get_from_path(root, items[:-1])[items[-1]]
Exemple complet
Voici une démonstration complète du code :
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] print(get_from_dict(dataDict, maplist)) # Output: 1 maplist = ["b", "v", "y"] print(get_from_dict(dataDict, maplist)) # Output: 2 set_in_dict(dataDict, ["b", "v", "w"], 4) print(dataDict) # Output: {'a': {'r': 1, 's': 2, 't': 3}, 'b': {'u': 1, 'v': {'w': 4, 'x': 1, 'y': 2, 'z': 3}, 'w': 3}}
Cette approche améliorée offre une méthode concise et efficace pour parcourir et modifier des structures de dictionnaires imbriquées complexes à l'aide d'une liste de clés, offrant flexibilité et lisibilité du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!