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でセットのセットを使用することは可能ですか?
私はセットの大規模なコレクションを扱っており、重複セット(セットA1、A2、...のセットBはAi = Ajの場合、2セットを「キャンセル」する必要はありません)
Pythonは、内部のset
オブジェクトが可変であり、ハッシュできないため、不満を言っています。解決策は、内部セットにfrozenset
を使用して、それらを変更する意図がないことを示すことです。
frozenset() でこれを行うことができると人々はすでに述べたので、これを実現する方法をコードに追加します。
たとえば、次のリストのリストからセットのセットを作成するとします。
t = [[], [1, 2], [5], [1, 2, 5], [1, 2, 3, 4], [1, 2, 3, 6]]
次の方法でセットを作成できます。
t1 = set(frozenset(i) for i in t)
frozenset
insideを使用します。
まったく同じ問題がありました。セットのセットとして機能するデータ構造を作成したかった。問題は、セットにimmutableオブジェクトが含まれている必要があることです。したがって、できることは、単にタプルのセットとして作成することです。それは私にとってはうまくいきました!
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!