Генерация всех возможных перестановок многотипной коллекции - PullRequest
0 голосов
/ 22 июня 2019

Могу ли я использовать itertools для генерации всех возможных перестановок многотипного словаря?Мне трудно понять, какую itertools функцию / с я могу использовать для достижения этой цели.Знаете ли вы?

Ниже приведен пример того, чего я хочу достичь

# Give the below Dict to a itertools function...
tuner_params = {
    'darken': (True, False),
    'hue_quantize': (True, False),
    'quantize': (True, False),
    'blur': (range(1,25), range(1,25)),
    'h_samples': range(2, 20),
    'v_samples': range(2, 20), 
    'offset': range(0.05, 0.9, 0.05), 
    'kernel': (range(1,25), range(1,25))
}

# And get something like...desired output is all possible permuations of the above dict values, for eg
[{
    'darken': True,
    'hue_quantize': True,
    'quantize': True,
    'blur': (1,1),
    'h_samples': 2,
    'v_samples': 2, 
    'offset': 0.05, 
    'kernel': (1,1)
},
{
    'darken': False,
    'hue_quantize': True,
    'quantize': True,
    'blur': (1,1),
    'h_samples': 2,
    'v_samples': 2, 
    'offset': 0.05, 
    'kernel': (1,1)
}
...
{
    'darken': False,
    'hue_quantize': False,
    'quantize': False,
    'blur': (25,25),
    'h_samples': 20,
    'v_samples': 20, 
    'offset': 0.9, 
    'kernel': (25,25)
}]

1 Ответ

0 голосов
/ 22 июня 2019

Вы можете сделать это, используя

  • , а также вложенные предложения for
  • itertools.product для различных имеющихся у вас наборов данных - сгенерировать списокзначений, а затем назначьте их нужным ключам dict.

Обратите внимание, что вам нужно немного больше узнать о том, как задать итерацию.Например, True or False - это просто логическое значение True;вам нужно (True, False), чтобы позволить product правильно перебирать значения.Точно так же, я думаю, вы захотите преобразовать свои range итераторы в list тип.

Этого достаточно, чтобы заставить вас двигаться в нужном вам направлении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...