我的目标是在字典中构建键之间的所有可能组合(加上一些其他不重要的规则),所以我写了下面的递归函数。
dict = {3: 54, 37: 100, 56: 33}
def dosomething(dict, indent, stop, position):
if dict == {} or stop <0:
return
keys = dict.keys()
for k in keys:
if k > position:
print indent, k
dosomething(dict, indent + " ", stop -1, k)
indent = " "
dosomething(dict, indent, 4, 0)
打印结果显示我想要的值:
56
3
56
37
56
37
56
但是现在我想将它们放在列表中,其中的元素将是:
[56]
[3,56]
[3,37,56]
[37,56]
有人能帮助我吗?
答案 0 :(得分:3)
以下内容将生成所有可能的键组合
的列表import itertools
dict = {3: 54, 37: 100, 56: 33}
combos = []
for i in range(len(dict.keys())):
combos.extend([sorted(l) for l in itertools.combinations(dict.keys(), i+1)])
print combos
将返回:
[[56], [3], [37], [56, 3], [56, 37], [3, 37], [56, 3, 37]]