我有两个嵌套列表,它们按列表长度的升序排列。例如:
listA= [[1],[2],[3,4],[5,6]]
listB= [[A],[B],[C,D],[E,F]]
我想获取将 listA 中的列表映射到相同索引的 listB 中的列表的所有排列,并以字典列表或元组列表的形式进行处理。我想要的输出的一个例子是:
dict1 = { 1->A,2->B,3->C,4->D,5->E,6->F}
dict2 = { 1->A,2->B,3->D,4->C,5->E,6->F}
dict3 = { 1->A,2->B,3->C,4->D,5->F,6->E}
dict4 = { 1->A,2->B,3->D,4->C,5->F,6->E}
我已经尝试使用 itertools 产品和排列,但我没有得到想要的结果。我目前的方法是获取每个列表对的映射排列,然后迭代创建每个可能的字典,但这不是我满意的解决方案。如果有人能提出解决此问题的好方法,我将不胜感激!
最佳答案
我想这就是你想要的:
import itertools as it
listA= [[1],[2],[3,4],[5,6]]
listB= [['A'],['B'],['C','D'],['E','F']]
result = []
for i in range(len(listA)):
result.append(list(it.product(listA[i], listB[i])))
print(result)
#[[(1, 'A')], [(2, 'B')], [(3, 'C'), (3, 'D'), (4, 'C'), (4, 'D')], [(5, 'E'), (5, 'F'), (6, 'E'), (6, 'F')]]
或者,如果您想要一维列表中的所有元组:
result = []
for i in range(len(listA)):
result.extend(list(it.product(listA[i], listB[i])))
#[(1, 'A'), (2, 'B'), (3, 'C'), (3, 'D'), (4, 'C'), (4, 'D'), (5, 'E'), (5, 'F'), (6, 'E'), (6, 'F')]
关于python - 映射两个嵌套列表的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66833830/