Python Language Recherche de clé (s) pour une valeur dans dict


Exemple

dict n'ont pas de méthode intégrée pour rechercher une valeur ou une clé car les dictionnaires ne sont pas ordonnés. Vous pouvez créer une fonction qui obtient la clé (ou les clés) pour une valeur spécifiée:

def getKeysForValue(dictionary, value):
    foundkeys = []
    for keys in dictionary:
        if dictionary[key] == value:
            foundkeys.append(key)
    return foundkeys

Cela pourrait également être écrit comme une liste de compréhension équivalente:

def getKeysForValueComp(dictionary, value): 
    return [key for key in dictionary if dictionary[key] == value]

Si vous ne vous souciez que d'une clé trouvée:

def getOneKeyForValue(dictionary, value):
    return next(key for key in dictionary if dictionary[key] == value)

Les deux premières fonctions renverront une list de toutes les keys ayant la valeur spécifiée:

adict = {'a': 10, 'b': 20, 'c': 10}
getKeysForValue(adict, 10)     # ['c', 'a'] - order is random could as well be ['a', 'c']
getKeysForValueComp(adict, 10) # ['c', 'a'] - dito
getKeysForValueComp(adict, 20) # ['b']
getKeysForValueComp(adict, 25) # []

L'autre ne renverra qu'une clé:

getOneKeyForValue(adict, 10)   # 'c'  - depending on the circumstances this could also be 'a'
getOneKeyForValue(adict, 20)   # 'b'

et StopIteration une StopIteration - Exception si la valeur n'est pas dans le dict :

getOneKeyForValue(adict, 25)

StopIteration