Python 从两个列表中查找不同的组合

Python 从两个列表中查找不同的组合,python,list,Python,List,给定两个任意长度的列表,我想找到这两个列表之间所有可能的组合,然后在新列表中添加该组合的字典对 例如,这两个列表是: List1-['A','B'] List2-[1,2] 结果列表应具有以下值: [{'A':1, 'B':1}, {'A':1,'B':2}, {'A':2, 'B':1}, {'A':2, 'B':2}] 我找到的所有解决方案都只是给出了可能的组合。假设我有一个长度为3和2的列表。可能的组合只有6个值。但是,根据我的要求,将有8个值 我使用的代码是: first_list =

给定两个任意长度的列表,我想找到这两个列表之间所有可能的组合,然后在新列表中添加该组合的字典对

例如,这两个列表是:

List1
-
['A','B']

List2
-
[1,2]

结果列表应具有以下值:

[{'A':1, 'B':1}, {'A':1,'B':2}, {'A':2, 'B':1}, {'A':2, 'B':2}]
我找到的所有解决方案都只是给出了可能的组合。假设我有一个长度为3和2的列表。可能的组合只有6个值。但是,根据我的要求,将有8个值

我使用的代码是:

first_list = ['A', 'B', 'C'] 
second_list = [1, 2]
 
combinations = [(a,b) for a in first_list for b in second_list]
其输出如下所示:

[('A', 1), ('A', 2), ('B', 1), ('B', 2), ('C', 1), ('C', 2)]
而我想要的输出是:

[{'A':1, 'B':1, 'C':1},
 {'A':1, 'B':1, 'C':2},
 {'A':1, 'B':2, 'C':1},
 {'A':1, 'B':2, 'C':2},
 {'A':2, 'B':1, 'C':1},
 {'A':2, 'B':1, 'C':2},
 {'A':2, 'B':2, 'C':1},
 {'A':2, 'B':2, 'C':2}]
你应该抬头看看

你可以用

list1 = ["a", "b", "c"]
list2 = [1, 2]
all_combinations = []

list1_permutations = itertools.permutations(list1, len(list2))
Get all permutations of `list1` with length 2

for each_permutation in list1_permutations:
    zipped = zip(each_permutation, list2)
    all_combinations.append(list(zipped))

print(all_combinations)
输出

[[('a', 1), ('b', 2)], [('a', 1), ('c', 2)], [('b', 1), ('a', 2)], [('b', 1), ('c', 2)], [('c', 1), ('a', 2)], [('c', 1), ('b', 2)]]

您可以使用
itertools.product
创建部分组合:

来自itertools导入产品的

第一个列表=['A'、'B'、'C']
第二个_列表=[1,2]
输出=产品(第二个列表,重复=长度(第一个列表))
组合=[{f:s表示zip中的(f,s)(first_list,c)}表示c-in-out]
印刷品(组合)

根据需要输出。

请用您尝试过的代码更新您的问题。这些不是笛卡尔乘积的元素组合。因此,您可以使用
itertools.product
。此外,导致8个而不是6个“组合”的要求是模糊的。请澄清。为什么不使用一个3和2的预期输出示例?您已经对其进行了编辑,但您未指定的要求仍然不清楚,该要求导致
(3,2)
案例中的预期输出为8个元素,而不是6个元素。您的示例的实际预期输出是什么?我也编辑了所需的输出。我还将第二部分转换为嵌套列表理解。好的,谢谢。我还将进行这些更改。(是的,恩(…)是个打字错误)。