Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从列表中获取所有不同的组合(Python)?_Python_List_Iterator_Iteration_Combinations - Fatal编程技术网

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

从列表中获取所有不同的组合(Python)?,python,list,iterator,iteration,combinations,Python,List,Iterator,Iteration,Combinations,我有以下两本字典: 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"]

我有以下两本字典:

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"]}
另一种可能是“ad”首选项保持不变,“bigd”首选项不同。我们必须遍历两个词典中的所有列表,并找到所有2^3*3*2的可能性。有人能帮我吗

您可以使用以下方法获取它们:

输出:

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个不同的输出

你能发布一些代码来显示你到目前为止所做的尝试吗?这将有助于我们给你一个更好的答案。谢谢你的回答,但我得到了288而不是324当我做了len(列表(所有变体))。你能帮个忙吗?@kumar
print(len(列表(所有变体)))
因为这确实得到了
288
@kumar在这里运行的相同代码得到了你期望的
288
可能性:@kumar是的,当然,我在键入它时弄错了,
a
是2^3,而不是3^2,所以总共是288,因为代码输出正确。我之所以添加此注释,是因为您的问题中的(3*2)缺少^2。@Thierrylahuille是否也可以只更改字典中每个键的前两个首选项来获得所有组合?例如,在字典a中,所有键只有两个首选项,但在字典b中,两个键都有三个首选项,所以我们只想更改前两个,而不包括“lugd”。一次可以是b['guru']-['ad',bigd',lugd']。只有前两个索引参与两个字典中所有键的排列。
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')}