字典值的所有組合

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}]