[PYTHON] Comment vérifier si une valeur existe dans un type d'énumération

Vous souhaitez utiliser une constante lorsque vous souhaitez avoir une valeur pour un élément spécifique. Quand on traite des constantes en Python, je pense personnellement qu'il est préférable d'utiliser ʻEnum` (type d'énumération).

Python n'est-il pas constant en premier lieu?

C'est vrai. Il n'y a pas de constante stricte, car toute valeur peut être écrasée selon la façon dont vous le faites. Mais il est écrit dans Official Document.

Notation énumérée

from enum import Enum
class Hoge(Enum):
    ONE = 1
    TWO = 2
    THREE = 3

Type d'énumération et traitement en boucle

Puisque le type d'énumération est un ensemble d'identificateurs, il existe peu de cas où la valeur donnée à l'identificateur lui-même est significative. S'il s'agit d'un type de liste, il peut être facilement sorti avec une instruction for, mais s'il s'agit d'un type d'énumération, cela nécessite une certaine ingéniosité en écriture.

Type de liste


>>> lst = [1, 2, 3]
>>> [l for l in lst]
[1, 2, 3]

Type d'énumération


>>> from enum import Enum
>>> class Hoge(Enum):
...     ONE = 1
...     TWO = 2
...     THREE = 3
...
>>> [v.value for n, v in Hoge.__members__.items()]
[1, 2, 3]

Je pense que je peux écrire si je viens ici

>>> from enum import Enum
>>> class Hoge(Enum):
...     ONE = 1
...     TWO = 2
...     THREE = 3
...
>>> [v.value for n, v in Hoge.__members__.items()]
[1, 2, 3]
>>> 1 in [v.value for n, v in Hoge.__members__.items()]
True

C'est fait. Je ne sais pas où l’utiliser.

prime

Que contient les __members__ énumérés?

>>> Hoge.__members__
mappingproxy({
    'ONE': <Hoge.ONE: 1>,
    'TWO': <Hoge.TWO: 2>,
    'THREE': <Hoge.THREE: 3>
})

Qu'est-ce que «MappingProxyType»? Selon le Document officiel

Proxy de mappage en lecture seule. Fournit une vue dynamique des entrées de mappage. Cela signifie que si le mappage change, la vue reflétera ces changements.

Je vois(?) Il y a ʻitems () `dans ce proxy. Cela ressemble à un dictionnaire quand vous le regardez.

Postscript

On m'a dit qu'il existe une façon d'écrire plus simple que @shiracamus.

>>> 1 in [e.value for e in Hoge]
True

Ou

>>> any(e.value == 1 for e in Hoge)
True

Il semble que vous puissiez écrire. Je vous remercie! !! Le premier est le niveau de pourquoi je n'ai pas remarqué ...

Je peux obtenir des conseils en écrivant un article, alors j'ai pensé que la sortie était importante.

Recommended Posts

Comment vérifier si une valeur existe dans un type d'énumération
[Python] Comment écrire une instruction if en une phrase.
Comment vérifier s'il est dans le type de dictionnaire (Dictionary, Hash) en utilisant tout ou partie
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment savoir s'il y a une valeur dans "quelque part" de pandas DataFrame
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[Python] Comment obtenir une valeur avec une clé autre que value avec Enum
Vérifiez si vous pouvez vous connecter à un port TCP en Python
Vérifiez si l'URL existe en Python
Comment vérifier la version d'opencv avec python
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Tutoriel "Cython" pour rendre Python explosif: Comment analyser la classe Enum définie en code C ++ vers Enum en Python.
Comment créer un fichier JSON en Python
Comment obtenir de l'aide dans un shell interactif
Comment implémenter un sélecteur de dégradé dans Houdini
Comment vérifier / extraire des fichiers dans un package RPM
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment créer une API Rest dans Django
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Comment lire des fichiers dans différents répertoires
Comment se moquer d'une fonction publique dans Pytest
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
[Pandas] Comment vérifier les doublons dans un tableau et supprimer les doublons (équivalent à supprimer les doublons dans Excel)
Vérifiez si la chaîne est un nombre en python
Comment récupérer la nième plus grande valeur en Python
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment développer des variables dans une chaîne de caractères
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Comment utiliser la clause exist dans l'ensemble de requêtes Django
Comment créer un outil CLI interactif avec Golang
Comment transformer un fichier .py en fichier .exe
Que faire si une erreur de décodage Unicode se produit dans pip
Comment créer un téléchargeur d'image avec Bottle (Python)
Comment déployer une application Go sur une instance ECS
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment référencer des fichiers statiques dans un projet Django
[Linux] Comment mettre votre IP dans une variable
Comment convertir un tableau en dictionnaire avec Python [Application]
Comment importer NoteBook en tant que module dans Jupyter (IPython)
Comment sortir un document au format pdf avec Sphinx
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Une histoire sur la façon de spécifier un chemin relatif en python.
Comment utiliser la méthode __call__ dans la classe Python
Comment appeler une fonction
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
Que faire si pip donne une DistributionError dans Homebrew
Comment importer des fichiers où vous le souhaitez en Python
Comment générer une clé publique à partir d'une clé privée SSH
Comment créer un package Python (écrit pour un stagiaire)
Comment manipuler le DOM dans iframe avec Selenium
Remarques sur la façon de charger un environnement virtuel avec PyCharm
Que faire si une erreur 0xC0000005 se produit dans tf.train.start_queue_runners ()