2
나는 목록을 나는 각 목록 (A, B 및 C)의 모든 순열을 생성 할 필요가 리스트의 DICT의 모든 순열 (특정 순서) 생성 조합
d = {'A': [1,2,3], 'B': [4,5], 'C': [6]}
의 DICT 있습니다. 괜찮습니다.
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,)]}
에
p = {}
for k in d.keys():
p[k] = [i for i in itertools.permutations(d[k])]
이 결과 그럼 (실제로 ['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
는 다른 키와 값의 임의의 숫자로 구성 될 수 있습니다 나는 방법을 모른다 이 경우에 사용하십시오. 또는 아마도 당신은 desribed 문제의 완전히 다른 해결책을 제안 할 수있을 것입니다. 최종 솔루션의 속도가 빨라집니다. 이 같은
신난다 !! 나는 대답을 꺼리는 것을 시도한다. 1)'map (p.get, sorted (p))'는 주어진 순서로리스트를 반환하지만'*'는 무엇을 의미합니까? 2) 순열 (permutations)을 실현하지 않으려면 어떻게해야합니까? – DrDom
'''''''''''''''''''''''''''''' '' '언팩하고 있기 때문에'product (* some_list)'가'product (some_list [0], some_list [1], some_list [2] ... 2) dict-comp의 순열 앞에'list'를 넣지 마십시오. –