如何打印字典的所有子集?

时间:2019-10-17 07:07:19

标签: python arrays

我要处理一个基本情况,即创建字典并将其子集打印到列表中。

我尝试过itertools,链和组合;


from itertools import chain, combinations

dict = {1,2,3}

def powerset(iterable):
    s = set(dict)
    return chain.from_iterable(combinations(s,r) for r in range(len(s)+1))

set(powerset("dict"))

此代码给出:

{(), (1,), (1, 2), (1, 2, 3), (1, 3), (2,), (2, 3), (3,)}

我希望这样:

[{}, {1}, {1, 2}, {1, 2, 3}, {1, 3}, {2}, {2, 3}, {3}]

2 个答案:

答案 0 :(得分:3)

更改此内容

set(powerset("dict"))

>>> [set(value) for value in powerset("dict")]

答案 1 :(得分:3)

首先,您将dictionariessets进行了混合。其次,强烈建议不要将变量的名称与python关键字或方法相同,就像您在dict中所做的那样。 现在,itertools中的所有函数都返回一个以tuple作为元素的可迭代对象。因此,您需要将它们转换回集合。

[set(subset) for subset in powerset(dict)]