簡體   English   中英

如何在 Python 中創建一組集合?

[英]How can I create a Set of Sets in Python?

我正在嘗試在Python中制作一套。我不知道該怎么做。

從空集xx開始:

xx = set([])
# Now we have some other set, for example
elements = set([2,3,4])
xx.add(elements)

但我明白了

TypeError: unhashable type: 'list'

要么

TypeError: unhashable type: 'set'

可不可以Python一套套?

我正在處理大量的集合,我希望能夠不必處理重復的集合(集合 B 的集合 A1,A2,....,如果 Ai = Aj,An 將“取消”兩個集合)

Python 的抱怨是因為內部set對象是可變的,因此不可散列。 解決方案是對內部集合使用frozenset ,以表明您無意修改它們。

人們已經提到你可以使用freezeset()來做到這一點,所以我將添加一個代碼來實現這一點:

例如,您想從以下列表中創建一組集合:

t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]

您可以通過以下方式創建您的集合:

t1 = set(frozenset(i) for i in t)

在里面使用frozenset

截至 2020 年,官方 Python 文檔建議使用frozenset來表示集合。

所以我遇到了完全相同的問題。 我想制作一個作為一組集合工作的數據結構。 問題是集合必須包含不可變對象。 因此,您可以做的只是將其作為一組元組。 這對我來說很好用!

A = set()
A.add( (2,3,4) )##adds the element
A.add( (2,3,4) )##does not add the same element
A.add( (2,3,5) )##adds the element, because it is different!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM