字典值的所有组合

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

给定诸如上面所示的字典之类的字典,其中存在表示要针对相应密钥探索的一组值的列表。假设你想要使用 "y"=10 探测 "x"="a",然后使用 "x"="a" with"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}]