[英]Get all the different combination from the lists (Python)?
我有以下兩本詞典:
a={"ad":["tau","guru"],
"bigd":["tau","guru"],
"lugd":["tau","guru"]}
b={"tau":["ad","bigd","lugd"],
"guru":["bigd","ad","lugd"]}
鍵的每個值都是鍵的優先順序。 我試圖用 python 完成的是如何獲得所有可能的偏好順序組合。 所以一種偏好順序是,當您只翻轉鍵“ad”的值時,其余的將相同。 它列在下面
a={"ad":["guru", "tau"],
"bigd":["tau","guru"],
"lugd":["tau","guru"]}
b={"tau":["ad","bigd","lugd"],
"guru":["bigd","ad","lugd"]}
其他可能是當“廣告”偏好保持不變而“大”偏好將不同時。 我們必須遍歷兩個字典中的所有列表並找到所有 2^3 * 3*2 的可能性。 有人可以幫我嗎?
您可以使用itertools獲取它們:
from itertools import permutations, product
a_variants = [dict(zip(["ad", "bigd", "lugd"], values))
for values in product(permutations(["tau","guru"]), repeat=3)]
b_variants = [dict(zip(["tau", "guru"], values))
for values in product(permutations(["ad", "bigd", "lugd"]), repeat=2)]
all_variants = product(a_variants, b_variants)
for va, vb in all_variants:
print("a:", va, "\nb:", vb, "\n")
輸出:
a: {'ad': ('tau', 'guru'), 'bigd': ('tau', 'guru'), 'lugd': ('tau', 'guru')}
b: {'tau': ('ad', 'bigd', 'lugd'), 'guru': ('ad', 'bigd', 'lugd')}
a: {'ad': ('tau', 'guru'), 'bigd': ('tau', 'guru'), 'lugd': ('tau', 'guru')}
b: {'tau': ('ad', 'bigd', 'lugd'), 'guru': ('ad', 'lugd', 'bigd')}
...
a: {'ad': ('guru', 'tau'), 'bigd': ('guru', 'tau'), 'lugd': ('guru', 'tau')}
b: {'tau': ('lugd', 'bigd', 'ad'), 'guru': ('lugd', 'ad', 'bigd')}
a: {'ad': ('guru', 'tau'), 'bigd': ('guru', 'tau'), 'lugd': ('guru', 'tau')}
b: {'tau': ('lugd', 'bigd', 'ad'), 'guru': ('lugd', 'bigd', 'ad')}
請注意,您有 2**3 * (3*2)**2 = 288 個不同的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.