Как перебирать категориальную комбинаторику разных классов Enum в Python?Python

Программы на Python
Ответить
Anonymous
 Как перебирать категориальную комбинаторику разных классов Enum в Python?

Сообщение Anonymous »

У меня есть функция main(), которая принимает экземпляр класса InputPermutation в качестве единственного аргумента. Идея состоит в том, что различия в результатах выполнения main() основаны исключительно на различиях в классе InputPermutation. Мне нужно перебрать все возможные конфигурации класса InputPermutation и записать результаты main() для каждого из запусков.

Код: Выделить всё

InputPermutation
имеет атрибуты, которые являются экземплярами разных классов Enum. Мне нужно перебрать все возможные экземпляры класса Enum для каждого из атрибутов InputPermutation, чтобы получить все возможные конфигурации.
Вот упрощенная модель проблемы, с которой я столкнулся. сталкиваюсь.

Код: Выделить всё

from enum import Enum

class Colour(Enum):
GREEN = "green"
BLUE = "blue"
RED = "red"

class Country(Enum):
ENGLAND = "england"
JAPAN = "japan"
AUSTRALIA = "australia"

class InputPermutation:
def __init__(self, colour: Colour, country: Country):
self.colour = colour
self.country = country

def main(input_permutation: InputPermutation) -> dict:

colour = input_permutation.colour.value
country = input_permutation.country.value

result = {colour: country}

return result

def iterate() -> dict:

pass
Мне нужна помощь в создании этой функции iterate(), я не могу понять, как заставить ее работать...
Мне бы хотелось, чтобы функция возвращала значения один словарь, где каждый ключ представляет собой «run_index», просто число, увеличивающееся на 1 при каждом запуске main(). В идеале каждое значение должно представлять собой словарь следующей структуры:

Код: Выделить всё

{
1: {"green": "england"},
2: {"green": "japan"},
3: {"green": "australia"},
4: {"blue": "england"},
# etc...
}
Мне бы хотелось, чтобы она масштабировалась, поэтому независимо от того, сколько разных классов Enum (или новых параметров в существующих классах Enum) будет добавлено в класс InputPermutation, функция все равно будет перебирать все варианты. Мне уже удалось получить этот результат, не делая его масштабируемым таким образом.
Проблема может быть связана с моим использованием классов Enum. Причина, по которой я выбрал это, заключается в раскрывающемся списке, который появляется, когда я выбираю варианты для выбора. Он также стандартизирует ввод параметров, запрещая вам вводить их в определенном формате перед преобразованием в строки, что снижает вероятность ошибок при вводе, если это имеет смысл.
Проблема действительно имеет реальную причину. мировая применимость модели, которую я создаю, но я думал, что с этой страной: цвет здесь будет легче работать...

Подробнее здесь: https://stackoverflow.com/questions/791 ... sses-in-py
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»