我有一个集合,其中应该包含一堆独特的列表项: 这就是我试图定义它的方式。你知道吗
results = set([], key= self.comparator)
这是比较器函数
def comparator(self, l1, l2):
if len(l1) != len(l2):
return -1
i = 0
while i < len(l1):
if l1[i] != l2[i]:
return -1
i += 1
return 0
这会引发以下错误
TypeError: set() does not take keyword arguments
显然set构造函数不接受密钥, 如果我没有传递密钥,那么我会得到以下错误
TypeError: unhashable type: 'list'
因此,我试图消除重复列表的方法是行不通的。我怎么用Python来做呢。你知道吗
如您所知,
set
不接受这样的密钥。不过,它确实希望您将它作为项目带来的任何东西都是“可哈希的”,这实际上意味着它有一个__hash__()
方法。list
没有工作哈希,从这个示例可以看出:如果要定义一个新类,它的行为类似于一个列表,但基于它的值有一个唯一的哈希,那么可以对它使用
set
。你知道吗您可以将列表转换为元组以执行所需操作:
似乎达到了你所需要的。你知道吗
印刷品:
相关问题 更多 >
编程相关推荐