web-dev-qa-db-fra.com

Vérifiez si une clé existe dans une liste Python

Supposons que j'ai une liste qui peut avoir un ou deux éléments:

mylist=["important", "comment"]

ou

mylist=["important"]

Ensuite, je veux avoir une variable pour fonctionner comme un indicateur en fonction de cette 2ème valeur existante ou non.

Quelle est la meilleure façon de vérifier si le 2ème élément existe?

Je l'ai déjà fait en utilisant len(mylist). Si c'est 2, c'est très bien. Cela fonctionne mais je préférerais savoir si le 2ème champ est exactement "commentaire" ou non.

Je suis alors arrivé à cette solution:

>>> try:
...      c=a.index("comment")
... except ValueError:
...      print "no such value"
... 
>>> if c:
...   print "yeah"
... 
yeah

Mais semble trop long. Pensez-vous que cela peut être amélioré? Je suis sûr qu'il peut mais ne parvient pas à trouver un moyen approprié de Python Data Structures Documentation .

18
fedorqui

Qu'en est-il de:

len(mylist) == 2 and mylist[1] == "comment"

Par exemple:

>>> mylist = ["important", "comment"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
True
>>>
>>> mylist = ["important"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
False
12
arshajii

Vous pouvez utiliser l'opérateur in:

'comment' in mylist

ou, si la position est importante, utilisez une tranche:

mylist[1:] == ['comment']

Ce dernier fonctionne pour les listes de taille un, deux ou plus, et est uniquement True si la liste est de longueur 2 et le deuxième élément est égal à 'comment':

>>> test = lambda L: L[1:] == ['comment']
>>> test(['important'])
False
>>> test(['important', 'comment'])
True
>>> test(['important', 'comment', 'bar'])
False
33
Martijn Pieters

Utilisez l'opérateur in:

>>> mylist=["important", "comment"]
>>> "comment" in mylist
True

Ah! Vous avez manqué la partie où vous avez dit, vous voulez juste "comment" pour être le 2e élément. Pour cela, vous pouvez utiliser:

len(mylist) == 2 and mylist[1] == "comment"
11
Rohit Jain