HOWTO · Python
Dictionnaire avec plusieurs valeurs en Python
Ce tutoriel montre comment ajouter plusieurs valeurs à une clé dans un dictionnaire en python
Sur cette page
Un dictionnaire Python associe une valeur à chaque clé. Cette valeur peut être une liste : vous pouvez donc regrouper plusieurs éléments sous une même clé, puis en ajouter d’autres au fil de l’arrivée des données.
Par exemple, la valeur associée à "a" ci-dessous est la liste [1, 2] :
d = {"a": [1, 2], "b": [2, 3], "c": [4, 5]}
print(d)
Cette méthode est utile pour regrouper des clés répétées ou conserver ensemble plusieurs valeurs liées. Les exemples suivants présentent une fonction réutilisable, defaultdict et setdefault().
Utiliser une fonction définie par l’utilisateur pour ajouter plusieurs valeurs à une clé dans un dictionnaire
Une fonction auxiliaire peut initialiser une clé lors de sa première apparition, puis utiliser extend() pour ajouter à la liste existante chaque élément d’un itérable. Ici, la fonction modifie le dictionnaire fourni et le renvoie ; elle n’ajoute pas la liste reçue comme élément imbriqué.
Exécutez cet exemple :
def add_values(mapping, key, values):
if key not in mapping:
mapping[key] = []
mapping[key].extend(values)
return mapping
word_freq = {"tutorial": [2, 3, 5]}
add_values(word_freq, "tutorial", [20, 21, 22])
print(word_freq)
Cette méthode convient lorsque vous souhaitez nommer l’opération ou réutiliser la même logique d’initialisation à plusieurs endroits. Passez un itérable, par exemple une liste, à extend() : chaque élément est ajouté à la liste cible.
Utiliser defaultdict pour ajouter plusieurs valeurs à une clé dans un dictionnaire
Importez defaultdict depuis collections et définissez list comme fabrique par défaut. L’accès à une clé absente crée alors une nouvelle liste et l’enregistre, ce qui facilite le regroupement de paires contenant des clés répétées. Dans un dictionnaire ordinaire, l’accès à une clé absente déclenche KeyError. defaultdict n’empêche pas cette erreur dans toutes les opérations : sa fabrique est utilisée pour les accès de la forme d[key], mais pas pour des méthodes comme get().
L’exemple suivant regroupe chaque valeur sous sa clé :
from collections import defaultdict
pairs = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
grouped = defaultdict(list)
for key, value in pairs:
grouped[key].append(value)
print(dict(grouped))
Utilisez cette forme pour construire un dictionnaire à partir d’un itérable de paires clé-valeur. La conversion en dict avant l’affichage montre les données regroupées sans l’enveloppe de type defaultdict.
Utilisez la méthode setdefault() pour ajouter plusieurs valeurs à une clé précise dans un dictionnaire
setdefault() renvoie la valeur déjà associée à une clé. Si la clé n’existe pas, la méthode y insère la valeur par défaut fournie et la renvoie. Si l’argument par défaut est omis, sa valeur est None ; dans cet exemple, une liste vide est fournie afin que la valeur renvoyée accepte append().
pairs = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
data = {}
for key, value in pairs:
data.setdefault(key, []).append(value)
print(data)
Utilisez setdefault() dans une boucle concise lorsque chaque paire d’entrée apporte un élément. Pour une initialisation plus élaborée ou réutilisée, une fonction auxiliaire ou defaultdict peut rendre l’intention plus facile à maintenir.