在临时文件中运行以下代码时,一切正常:
TypeError: unhashable type: 'list'
但是当我运行以下代码时
namespace Shared.User
{
public enum PermissionType
{
System,
Account,
Site,
Queue
}
}
我收到错误Cannot implicitly convert type 'Shared.User.PermissionType [MyWebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b9f7c69b7e2ca2dc]' to 'Shared.User.PermissionType [Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b9f7c69b7e2ca2dc]'. An explicit conversion exists (are you missing a cast?) MyWebServices
。
这里有什么问题?
答案 0 :(得分:3)
发出
时x = [1,1,1]
set(x)
您正在使用set
中的元素构建x
,这很好,因为x
的元素属于int
类型,因此是不可变的。
但是,mylist
是列表列表(因为您的vector
对象是列表)。这里的问题是mylist
内的列表是可变的,因此无法进行哈希处理。这就是python拒绝构建set
。
您可以将vector
列表转换为tuple
来解决此问题。元组是不可变的,因此Python在set
个对象列表中构建tuple
没有问题。
演示:
>>> lst = [[1,2], [3,4]]
>>> set(lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> set(map(tuple, lst))
set([(1, 2), (3, 4)])
答案 1 :(得分:3)
这是对的。列表是不可删除的,因为它是可变的。改为使用元组。