Python Language Ricerca di chiavi (s) per un valore in dict


Esempio

dict non ha un metodo incorporato per cercare un valore o una chiave perché i dizionari non sono ordinati. È possibile creare una funzione che ottiene la chiave (o le chiavi) per un valore specificato:

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

Questo potrebbe anche essere scritto come una comprensione di lista equivalente:

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

Se ti interessa solo una chiave trovata:

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

Le prime due funzioni restituiranno un list di tutte le keys con il valore specificato:

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'altro restituirà solo una chiave:

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

e StopIteration una StopIteration - Exception se il valore non è nel dict :

getOneKeyForValue(adict, 25)

StopIteration