의 내가 행동의 세 가지 유형의 포함 할 수있는 작업 목록,이 가정 해 봅시다 :논리식에 따라 중첩 된 목록의 모든 조합을 계산
이유형 A : 행동 (분리)의 모든 유형을 포함 할 수 있습니다
타입 B를 : 모든 유형의 작업을 포함 할 수 있습니다 ( 주문)
유형 C : 하위 작업을 포함 할 수 없습니다. 이것은 내가 끝까지 갖고 싶어하는 수준입니다.
나는 (disbunction과 연결이 튜플과리스트로 각각 표현 될 수 있다고 생각했다. (python - representing boolean expressions with lists 기준) 그러나 이것이 최적의 솔루션인지는 확실하지 않다.
유형 A와 B에는 유형 요소를 포함하는 dict가 있습니다.
type_a = {
‘a1’: ('b1', 'a2'),
‘a2’: ('c1', 'c2')
}
type_b = {
‘b1’: ['c4', 'c5', 'c7'],
‘b2’:['c3', 'c4']
}
상세한 설명 :(['c4', 'c5','c7'], 'c1', 'c2')
'A2'과 동등한 ('b1', 'a2')
같다
'A1'은 ('c1', 'c2')
'B1'과 동일 같다 ['c4', 'c5', 'c7']
'b2'가 동일 함 예 입력
['c3', 'c4']
행 :
['a1', 'b2', 'c6']
예상 출력 :
결과는 오직 C 형 작업을 포함한다.
원시
[(['c4', 'c5', 'c7'], 'c1', 'c2'), 'c3', 'c4', 'c6']
모든 조합
['c4', 'c5','c7', 'c3', 'c4', 'c6']
['c1', 'c3', 'c4', 'c6']
['c2', 'c3', 'c4', 'c6']
질문 :
- 가 결합 및 분리 재와 생각이 튜플을 표현하고 좋은 아이디어를 나열 하는가?
- 이것을 구현하는 효율적인 방법은 무엇입니까?
- itertools를 사용하여 모든 조합을 계산하는 함수를 구현할 수 있습니까? (저는 그들에게 에 대해 익숙하지 않지만 매우 강력하다고 들었습니다.)
어떤 도움을 주셔서 감사합니다.
우수합니다. 감사합니다. 확장으로 나는 언급 된 문자열을 첫 번째 요소로 포함하는 list 요소도 받아 들일 것으로 생각했습니다.'[[ 'a1', { 'param': 'something'}], [ 'b2', { 'param': 'something'}]'. 두 번째 요소 (dict)는 전달되어야합니다. – eljobso