Ich bin häufig in einer Situation, in der ich eine Gruppe logisch verbundener Symbole habe, über die ich iterieren möchte. Die naheliegende Lösung besteht darin, diese Symbole zu einer Liste hinzuzufügen, aber die Duplizierung ist mühsam zu pflegen, und ich muss darauf vertrauen, dass, wenn meine Mitentwickler einen ändern, sie auch den anderen ändern.Python: Iterieren über eine Gruppe von Symbolen
Gibt es eine Möglichkeit, Symbole zu erstellen und gleichzeitig ihren Wert einer Liste hinzuzufügen?
Zum Beispiel
# A group of like symbols that can be used independently in this scope
hippo = 'hippo'
gator = 'gator'
mouse = 'mouse'
# To loop across them I have to put them into a list
valid_animals = [hippo, gator, mouse] # Maintain me separately, fool!
Psuedo-Code für das, was ich will
# Data structure that declares symbols whose values can be iterated over
valid_animals = { # Even your mom could maintain this
hippo = 'hippo'
gator = 'gator'
mouse = 'mouse'
}
# Use the symbols by themselves
print "I had a", mouse, "in my house"
# Iterate over the symbols
print mouse in valid_animals # True
Würde ein [Enum] (https://docs.python.org/3/library/enum.html) Ihren Anforderungen entsprechen? – rkersh
Enums sind fantastisch, aber es gibt subtile, aber signifikante Unterschiede. Vor allem konzentrieren sich Enums auf die NAMEN der Symbole und nicht auf die WERTE der Symbole. Dies macht sich besonders beim Iterieren bemerkbar. Wenn ich zum Beispiel 'valid_animals' in ein Enum umwandle, gibt die' print mouse in valid_animals' False zurück. – user2859458
Es kann nicht sein, was Sie wollen, aber Sie könnten 'Maus in [i.value für i in valid_animals] drucken ', oder? Und Sie könnten eine Klassenmethode "values" hinzufügen, die das etwas hübscher macht (z. B. "print mouse in valid_animals.values ()"). – rkersh