Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一组值的所有唯一组合_Python_Python 3.x - Fatal编程技术网

Python 一组值的所有唯一组合

Python 一组值的所有唯一组合,python,python-3.x,Python,Python 3.x,如果我有任意数量的元素,每个元素都有一组指定的值,那么如何从每个元素的集合中获得所有可能的值组合 例如,假设我有: elems = {"A": (0, 1), "B": (-1, -5)} 我能做些什么来获得以下信息 ({"A": 0, "B": -1}, {"A": 0, "B": -5}, {"A": 1, "B": -1}, {&

如果我有任意数量的元素,每个元素都有一组指定的值,那么如何从每个元素的集合中获得所有可能的值组合

例如,假设我有:

elems = {"A": (0, 1), "B": (-1, -5)}
我能做些什么来获得以下信息

({"A": 0, "B": -1}, {"A": 0, "B": -5}, {"A": 1, "B": -1}, {"A": 1, "B": -5})
输入/输出不需要使用dict,但我认为这是表示它的最简单方法。 假设命令是重要的

我想知道一种方法:

不假设只有两个元素,如示例中所示。 不假定所有元素的集合长度相等。
这有点像列出真值表的所有输入。

您可以使用嵌套列表/字典理解,使用生成所有值的组合,然后将每个结果元组从该元组ziping到键,生成键/值对以组成每个字典结果。下面是一个使用稍微复杂一点的数据版本的示例:

进口itertools 元素={A:0,1,B:-1,-5,C:1,2,3} keys=元素keys res=[dictzipkeys,p代表itertools.product*elems.values中的p] 输出:

[
 {'A': 0, 'B': -1, 'C': 1},
 {'A': 0, 'B': -1, 'C': 2},
 {'A': 0, 'B': -1, 'C': 3},
 {'A': 0, 'B': -5, 'C': 1},
 {'A': 0, 'B': -5, 'C': 2},
 {'A': 0, 'B': -5, 'C': 3},
 {'A': 1, 'B': -1, 'C': 1},
 {'A': 1, 'B': -1, 'C': 2},
 {'A': 1, 'B': -1, 'C': 3},
 {'A': 1, 'B': -5, 'C': 1},
 {'A': 1, 'B': -5, 'C': 2},
 {'A': 1, 'B': -5, 'C': 3}
]

您可以使用嵌套列表/字典理解,使用生成所有值的组合,然后将每个结果元组从该元组ziping到键,以生成键/值对以组成每个字典结果。下面是一个使用稍微复杂一点的数据版本的示例:

进口itertools 元素={A:0,1,B:-1,-5,C:1,2,3} keys=元素keys res=[dictzipkeys,p代表itertools.product*elems.values中的p] 输出:

[
 {'A': 0, 'B': -1, 'C': 1},
 {'A': 0, 'B': -1, 'C': 2},
 {'A': 0, 'B': -1, 'C': 3},
 {'A': 0, 'B': -5, 'C': 1},
 {'A': 0, 'B': -5, 'C': 2},
 {'A': 0, 'B': -5, 'C': 3},
 {'A': 1, 'B': -1, 'C': 1},
 {'A': 1, 'B': -1, 'C': 2},
 {'A': 1, 'B': -1, 'C': 3},
 {'A': 1, 'B': -5, 'C': 1},
 {'A': 1, 'B': -5, 'C': 2},
 {'A': 1, 'B': -5, 'C': 3}
]

itertools.product对你有用吗?itertools.product对你有用吗?你可以做:dictzipkeys,p@flakes说得好,我没有思考。我已经更新了答案。你可以做:dictzipkeys,p@flakes说得好,我没有思考。我已经更新了答案。