python - 映射两个嵌套列表的排列

标签 python

我有两个嵌套列表,它们按列表长度的升序排列。例如:

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/

相关文章:

python - 如何克隆Python、Colab中的特定分支?

python - 从 CSV 文件的 2 列中获取数据。检查条目是否相同并添加货币金额

python - conda 安全错误 : file has an incorrect size

javascript - Bokeh js 通过单击将一个图更改或重新渲染为另一个图

python - 在 python bindings/clang 中的 get-includes 中解析 cpp 文件时过滤目录

python - 将基于索引的列添加到 Pandas 中的数据框

python - Flask应用程序中的ElasticSearch RequestError:查询仅适用于两个模型之一(search_phase_execution_exception,创建查询失败)

python - Python 中的全局静态变量

python - 如何绕过 nsswitch.conf 在 Linux 上(使用 python)进行 DNS 查询并且没有额外的包

python - 具有一个(或多个)参数的 Python 多输出回归或分类器