[PYTHON] So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist

Sie möchten eine Konstante verwenden, wenn Sie einen Wert für eine bestimmte Sache haben möchten. Wenn ich mich mit Konstanten in Python befasse, denke ich persönlich, dass es besser ist, "Enum" (Aufzählungstyp) zu verwenden.

Ist Python nicht in erster Linie konstant?

Korrekt. Es gibt keine strikte Konstante, da jeder Wert je nach Vorgehensweise überschrieben werden kann. Es ist jedoch in Official Document geschrieben.

Aufzählung Notation

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

Aufzählungstyp und Schleifenverarbeitung

Da der Aufzählungstyp eine Reihe von Bezeichnern ist, gibt es nur wenige Fälle, in denen der dem Bezeichner selbst zugewiesene Wert von Bedeutung ist. Wenn es sich um einen Listentyp handelt, kann er leicht mit einer for-Anweisung ausgegeben werden. Wenn es sich jedoch um einen Aufzählungstyp handelt, ist ein gewisser schriftlicher Einfallsreichtum erforderlich.

Listentyp


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

Aufzählungstyp


>>> 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]

Ich denke, ich kann schreiben, wenn ich hierher komme

>>> 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

Es ist fertig. Ich weiß nicht, wo ich es verwenden soll.

Bonus

Was ist in den aufgezählten "members"?

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

Was ist "MappingProxyType"? Laut dem offiziellen Dokument

Schreibgeschützter Mapping-Proxy. Bietet eine dynamische Ansicht der Zuordnungseinträge. Dies bedeutet, dass die Ansicht diese Änderungen widerspiegelt, wenn sich die Zuordnung ändert.

Das war's(?) Dieser Proxy enthält "items ()". Es sieht aus wie ein Wörterbuch, wenn man es betrachtet.

Nachtrag

Mir wurde gesagt, dass es eine einfachere Schreibweise gibt als @shiracamus.

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

Oder

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

Es scheint, dass Sie schreiben können. Vielen Dank! !! Das erste ist das Niveau, warum ich es nicht bemerkt habe ...

Ich kann mich durch das Schreiben eines Artikels beraten lassen, daher dachte ich, dass die Ausgabe wichtig ist.

Recommended Posts

So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
So überprüfen Sie, ob es sich um einen Wörterbuch-Typ (Wörterbuch, Hash) handelt, indem Sie einen oder alle verwenden
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
So finden Sie heraus, ob "irgendwo" von pandas DataFrame einen Wert enthält
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
[Python] So erhalten Sie mit Enum einen Wert mit einem anderen Schlüssel als dem Wert
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Überprüfen Sie, ob die URL in Python vorhanden ist
So überprüfen Sie die Version von opencv mit Python
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
"Cython" -Tutorial, um Python explosiv zu machen: So analysieren Sie die in C ++ - Code definierte Enum-Klasse mit Enum in Python.
So erstellen Sie eine JSON-Datei in Python
So erhalten Sie Hilfe in einer interaktiven Shell
So implementieren Sie eine Verlaufsauswahl in Houdini
So überprüfen / extrahieren Sie Dateien im RPM-Paket
So benachrichtigen Sie Discord-Kanäle in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
[Pandas] So überprüfen Sie Duplikate in einer Tabelle und löschen Duplikate (entspricht dem Löschen von Duplikaten in Excel)
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
So rufen Sie den n-ten größten Wert in Python ab
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Verwendung der Exist-Klausel in Django Queryset
So erstellen Sie ein interaktives CLI-Tool mit Golang
So verwandeln Sie eine .py-Datei in eine .exe-Datei
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
So stellen Sie eine Go-Anwendung auf einer ECS-Instanz bereit
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So verweisen Sie auf statische Dateien in einem Django-Projekt
[Linux] Wie Sie Ihre IP in eine Variable einfügen
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
So importieren Sie NoteBook als Modul in Jupyter (IPython)
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Verwendung der Methode __call__ in der Python-Klasse
So rufen Sie eine Funktion auf
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
So erstellen Sie eine Instanz einer bestimmten Klasse aus dict mit __new__ () in Python
Was tun, wenn pip in Homebrew einen DistributionError ausgibt?
So importieren Sie Dateien in Python an eine beliebige Stelle
So generieren Sie einen öffentlichen Schlüssel aus einem privaten SSH-Schlüssel
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
So manipulieren Sie das DOM im Iframe mit Selen
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Was tun, wenn in tf.train.start_queue_runners () ein 0xC0000005-Fehler auftritt?