是否可以在递归函数上创建列表列表?

时间:2015-09-11 13:02:04

标签: python recursion

我的目标是在字典中构建键之间的所有可能组合(加上一些其他不重要的规则),所以我写了下面的递归函数。

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]

有人能帮助我吗?

1 个答案:

答案 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]]