繁体   English   中英

从列表中获取所有不同的组合(Python)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM