Все комбинации значений словаря

options = {

"x": ["a", "b"],

"y": [10, 20, 30]

}



Дан словарь в примере выше, где есть список, представляющий набор значений для поиска соответствующего ключа. Предположим, вы хотите найти "x"="a" с "y"=10, затем "x"="a" с "y"=10 и т. д., пока вы не переберете все возможные комбинации.



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

import itertools

options = {
"x": ["a", "b"],
"y": [10, 20, 30]
}

keys = options.keys()
values = (options[key] for key in keys)
combinations = [dict(zip(keys, combination)) for combination in itertools.product(*values)]
print combinations



Это дает нам следующий список, хранящийся в переменной combinations:

[{'x': 'a', 'y': 10},
{'x': 'b', 'y': 10},
{'x': 'a', 'y': 20},
{'x': 'b', 'y': 20},
{'x': 'a', 'y': 30},
{'x': 'b', 'y': 30}]