<p>下面的代码在函数U=set(p.enum())中有一个错误,它是不可更改类型的类型错误:“set”,如果您看到类方法enum返回“L”,这是集合列表,而函数U应该是集合,那么您能帮助我解决这个问题吗?或者我如何将集合列表转换为集合集?</p>
<pre><code>class pattern(object):
def __init__(self,node,sets,cnt):
self.node=node
self.sets=sets
self.cnt=cnt
def enum(self):
L=[]
if self.cnt==1:
L = self.node
else:
for i in self.sets:
L=[]
for j in self.node:
if i!=j:
L.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(set([i])|set([j]))
return L #List of sets
V=set([1,2,3,4])
U=set()
cnt=1
for j in V:
p=pattern(V,(U|set([j])),cnt)
U=set(p.enum()) #type error Unhashable type:'set'
print U
cnt+=1
</code></pre>
<p>你放入一个集合中的单个项不能是可变的,因为如果它们改变了,有效的散列将改变,因此检查包含的能力将崩溃。</p>
<p>相反,您需要将不可变对象放入一个集合中,例如<code>frozenset</code>s</p>
<p>如果将返回语句从<code>enum</code>方法更改为。。。</p>
<pre><code>return [frozenset(i) for i in L]
</code></pre>
<p>……那就应该管用了。</p>