Clés en double dans les dictionnaires Python
Dans le domaine de la programmation, les dictionnaires s'avèrent inestimables pour organiser les données en mappant des clés uniques aux valeurs correspondantes. Cependant, l’implémentation standard du dictionnaire Python adhère à un principe strict : chaque clé doit rester unique au sein du dictionnaire. Cette contrainte pose un défi lorsqu'il s'agit de scénarios impliquant des clés en double dans un ensemble de données.
Création d'un dictionnaire avec des clés en double
Supposons que nous rencontrions un fichier texte contenant une immatriculation de voiture en double numéros, chacun associé à des informations différentes telles que les noms des conducteurs, les extensions téléphoniques et les emplacements de stationnement. La tâche consiste à construire un dictionnaire avec les numéros d'enregistrement comme clés et les données correspondantes comme valeurs. L'extrait suivant illustre une approche courante :
data_dict = {} data_list = [] def createDictionaryModified(filename): path = "C:\Users\user\Desktop" basename = "ParkingData_Part3.txt" filename = path + "//" + basename file = open(filename) contents = file.read() print(contents, "\n") data_list = [lines.split(",") for lines in contents.split("\n")] for line in data_list: regNumber = line[0] name = line[1] phoneExtn = line[2] carpark = line[3].strip() details = (name, phoneExtn, carpark) data_dict[regNumber] = details print(data_dict, "\n") print(data_dict.items(), "\n") print(data_dict.values())
Cependant, ce code est confronté à une limitation en raison du comportement du dictionnaire par défaut de Python : les clés en double entraînent l'écrasement des valeurs précédentes. Pour contourner cela, une solution consiste à stocker des listes ou des ensembles dans le dictionnaire.
Utilisation de Collections.defaultdict
La bibliothèque standard Python fournit un outil utile à cet effet : collections.defaultdict. Cette classe initialise un dictionnaire avec une usine par défaut, garantissant qu'une clé inexistante créera une nouvelle liste ou un nouvel ensemble (en fonction de l'argument d'usine).
from collections import defaultdict data_dict = defaultdict(list)
Pour remplir le dictionnaire avec des clés en double, il suffit remplacez l'instruction d'affectation d'origine :
data_dict[regNumber] = details
par :
data_dict[regNumber].append(details)
Cette stratégie crée efficacement un dictionnaire de listes, où chaque clé correspond à une liste de valeurs associées. En tirant parti de collections.defaultdict, vous pouvez gérer avec succès les clés en double dans vos dictionnaires Python.
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!