我有以下字典:
tmp.flush()
是否可以仅基于交换值查找和打印此词典的所有迭代?
例如
d = {
'A': 50,
'B': 30,
'C': 20
}
值是唯一的,只要找到所有可能的迭代,交换值的顺序就无关紧要。
答案 0 :(得分:3)
我们可以使用stdlib中的itertools
library获得可能的排列
>>> from itertools import permutations
>>> d = {
'A': 50,
'B': 30,
'C': 20
}
>>> [dict(zip(d.keys(), values)) for values in permutations(d.values())]
[{'A': 50, 'B': 30, 'C': 20},
{'A': 20, 'B': 30, 'C': 50},
{'A': 30, 'B': 50, 'C': 20},
{'A': 20, 'B': 50, 'C': 30},
{'A': 30, 'B': 20, 'C': 50},
{'A': 50, 'B': 20, 'C': 30}]
答案 1 :(得分:1)
from itertools import permutations
d = {
'A': 50,
'B': 30,
'C': 20
}
vals = d.values()
for x in permutations(vals, len(vals)):
x = iter(x)
print({k: next(x) for k in d})
# {'A': 50, 'B': 30, 'C': 20}
# {'A': 50, 'B': 20, 'C': 30}
# {'A': 30, 'B': 50, 'C': 20}
# {'A': 30, 'B': 20, 'C': 50}
# {'A': 20, 'B': 50, 'C': 30}
# {'A': 20, 'B': 30, 'C': 50}
答案 2 :(得分:1)
您可以在itertools
中使用置换:
import itertools
[dict(zip(d.keys(), l)) for l in itertools.permutations(d.values())]
答案 3 :(得分:1)
我不知道有任何直接方法可以执行此操作,但是您可以对键本身进行排列(即“ abc”,“ acb”,“ bac”,“ bca”等),然后使用该键来获取排列到您的集合的值。
例如,排列密钥集为'bca': 键“ a”获取原始词典“ b”的内容。 键“ b”获取原始词典“ c”的内容。 键“ c”获取原始词典“ a”的内容。
,我将从这个问题中得到置换的键集: Finding all possible permutations of a given string in python
答案 4 :(得分:1)
如果你让一组具有键和值可以使用itertools模块里,所述组合()函数。从结果中,仅用键消除配对。
以下是详细信息:https://docs.python.org/2/library/itertools.html#itertools.combinations