下面的代码在函数U=set(p.enum())中有一个错误,它是不可更改类型的类型错误:“set”,如果您看到类方法enum返回“L”,这是集合列表,而函数U应该是集合,那么您能帮助我解决这个问题吗?或者我如何将集合列表转换为集合集?
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.append(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
引发此错误的原因是集合只能包含不可变类型。或集合是可变的。然而,这里有
frozenset
类型:你放入一个集合中的单个项不能是可变的,因为如果它们改变了,有效的散列将改变,因此检查包含的能力将崩溃。
相反,您需要将不可变对象放入一个集合中,例如
frozenset
s如果将返回语句从
enum
方法更改为。。。……那就应该管用了。
相关问题 更多 >
编程相关推荐