Comment trouver toutes les clés d'un dictionnaire avec une valeur donnée en python ?

Published: 13 février 2018

Tags: Python; Dictionnaire;

DMCA.com Protection Status

Exemples de recherche en python de toutes les clés d'un dictionnaire avec une valeur donnée:

Créer un dictionnaire

Créons un dictionnaire simple:

d = {'George Chandler': 20,
 'Scott Respess': 25,
 'Chelsea Pineda': 25,
 'Carmen Wright': 25,
 'Lillian Hirsch': 21,
 'Nathaniel Chipman': 21,
 'Gladys Patterson': 22,
 'Nicholas Mccanna': 21,
 'Dwight Mccullough': 22,
 'Charles Stanley': 23}

key est le nom complet et la valeur est l'âge.

Find all keys in a dictionary with a given value using a loop

Pour retrouver tous les utilisateurs de 21 ans à partir du dictionnaire d, une solution consiste à parcourir l'ensemble du dictionnaire:

for k,v in d.items():
        if v == 21:
                print('{} has 21'.format(k))

donne

Lillian Hirsch has 21
Nathaniel Chipman has 21
Nicholas Mccanna has 21

Créer une liste de toutes les clés d'un dictionnaire avec une valeur donnée

Nous pouvons également créer une liste d'utilisateurs de 21 ans:

[k for k,v in d.items() if v == 21]

donne

['Lillian Hirsch', 'Nathaniel Chipman', 'Nicholas Mccanna']

Solutions complémentaires

Une autre solution qui fonctionne si la valeur est unique:

d = {'George Chandler': 20,
 'Scott Respess': 25,
 'Chelsea Pineda': 25,
 'Carmen Wright': 25,
 'Lillian Hirsch': 21,
 'Nathaniel Chipman': 21,
 'Gladys Patterson': 22,
 'Nicholas Mccanna': 21,
 'Dwight Mccullough': 22,
 'Charles Stanley': 23}

list(d.keys())[list(d.values()).index(21)]

donne

'Lillian Hirsch'

Si la valeur n'est pas unique, une solution consiste à utiliser itemgetter

from operator import itemgetter

itemgetter(*[idx for idx,e in enumerate(list(d.values())) if e == 21])(list(d.keys()))

donne

('Lillian Hirsch', 'Nathaniel Chipman', 'Nicholas Mccanna')

Références