假設我有一個動作列表,它可以包含三種不同類型的動作:計算嵌套列表的所有組合基於邏輯表達式
A型:可以包含所有類型的動作(分斷)
B型:可以包含所有類型的動作(訂購連接)
類型C:不能包含子動作。這是我最終想要達到的水平。
我想過(基於:python - representing boolean expressions with lists)分離和連接可以用一個元組或一個列表來表示,但我不確定這是否是最優解。
對於類型A和B,存在包含類型元素的詞典,例如,
type_a = {
‘a1’: ('b1', 'a2'),
‘a2’: ('c1', 'c2')
}
type_b = {
‘b1’: ['c4', 'c5', 'c7'],
‘b2’:['c3', 'c4']
}
詳細說明:
'A1' 是等於('b1', 'a2')
,其等於(['c4', 'c5','c7'], 'c1', 'c2')
'A2' 是等於('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? (我不是很熟悉 他們,但我聽說他們是非常強大的)
感謝您的任何幫助。
非常好,謝謝你。作爲一個擴展,我想也接受列表元素,其中包含提到的字符串作爲第一個元素,例如 '[['a1',{'param':'something'}],['b2',{'param':'something'}]'。第二個元素(字典)應該通過。 – eljobso