私はリストの口述を持っています
d = {'A': [1,2,3], 'B': [4,5], 'C': [6]}
各リスト(A、B、C)のすべての順列を作成する必要があります。これで結構です。
p = {}
for k in d.keys():
p[k] = [i for i in itertools.permutations(d[k])]
これにより、p
{'A': [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)],
'B': [(4, 5), (5, 4)],
'C': [(6,)]}
次に、A、B、Cリストのタプルを特定の順序でマージする必要があります(たとえば、sorted(p.keys())
実際に与える順序など['A', 'B', 'C']
)。したがって、整数のタプルのリストを取得する必要があります。
[(1,2,3,4,5,6),
(1,2,3,5,4,6),
(1,3,2,4,5,6),
(1,3,2,5,4,6),
...
(3,2,1,5,4,6)
]
そのような場合に使用できることは知っていitertools.product
ますが、初期辞書d
はキーが異なる任意の数の値で構成されている可能性があり、この場合の使用方法がわかりません。または、説明されている問題のまったく異なる解決策を提案できるかもしれません。最終的な解決策が速ければ速いほど、うまく機能します。