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

我有一个基本案例要处理,它是创建字典并将其子集打印到列表中。


我试过itertools、chain和组合;



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}]


梦里花落0921
浏览 113回答 2
2回答

摇曳的蔷薇

首先,您正在dictionaries与sets. 其次,强烈建议不要将变量命名为与 python 关键字或方法相同的名称,就像您在此处使用dict. 现在,来自 itertools 的所有函数都返回一个以tuples 为元素的可迭代对象。因此,您需要将它们转换回集合。[set(subset) for subset in powerset(dict)]

噜噜哒

改变这个,set(powerset("dict"))至>>> [set(value) for value in powerset("dict")]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python