J'ai le dictionnaire suivant en python:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
J'ai besoin d'un moyen de trouver si une valeur telle que "un" ou "deux" existe dans ce dictionnaire.
Par exemple, si je voulais savoir si l'index "1" existait, je devrais simplement taper:
"1" in d
Et puis python me dirait si c'est vrai ou faux, mais je dois faire exactement la même chose, sauf pour trouver si une valeur existe.
python
dictionary
find
JimmyK
la source
la source
d
, les timings sont sans signification. En Python 3,dict.values()
est une vue de dictionnaire, par défaut, etdict.itervalues()
etdict.viewvalues()
ont disparu. Vous pouvez tester à nouveau cela (avec un dictionnaire plus grand) et l'utiliserlist(d.values())
pour obtenir le comportement Python 2 etiter(d.values())
pour obtenir ledict.itervalues()
comportement, mais comme ces deux versions nécessitent une recherche et un appel globaux, elles seront absolument plus lentes. Les deux font un travail supplémentaire qui n'est pas nécessaire.Vous pouvez utiliser
pour tester si se
"one"
trouve parmi les valeurs de votre dictionnaire.la source
Dictionnaire Python a get (clé) funcion
Par exemple,
Si votre clé n'existe pas, retournera une
none
valeur.Contenu pertinent pour les versions inférieures à 3.0 et supérieures à 5.0. .
la source
key:value
et non clé.Utilisez des vues de dictionnaire:
la source
Différents types pour vérifier les valeurs existent
Et si la liste des valeurs
Et si la liste de valeurs avec des valeurs de chaîne
la source
value in [... list comprehension over sequence ...]
, utilisezany(value in sequence ...)
, pour éviter de créer un objet de liste que vous n'utilisez pas pour autre chose, et pour court-circuiter lorsque la valeur a été trouvée.En Python 3, vous pouvez utiliser la
values()
fonction du dictionnaire. Il renvoie un objet de vue des valeurs. Ceci, à son tour, peut être passé à laiter
fonction qui retourne un objet itérateur. L'itérateur peut être vérifié en utilisantin
, comme ceci,Ou vous pouvez utiliser l'objet de visualisation directement car il est similaire à une liste
la source
iter()
dans une vue de dictionnaire;in
utilisera déjà l'objet comme un itérable (le type n'implémente pas de__contains__
méthode dédiée ). La seule différence entre'one' in iter(d.values())
et'one in d.values()
est que vous avez fait faire du travail supplémentaire à Python (en payant le coût d'une recherche globaleiter
).