删除重复项时,我得到了这个不可用的类型:'list'错误!!! TypeError:unhashable type:'list'

时间:2016-11-19 14:53:27

标签: python list duplicates

data_keys=list(set(data_keys))
print data_keys

我尝试删除此列表中的重复键,但发现此错误。

我正在为此寻找简单的解决方案。

错误讯息:

data_keys=list(set(data_keys))
TypeError: unhashable type: 'list'

1 个答案:

答案 0 :(得分:2)

因为data_list中有list类型的项目。 set()只能用于hashable对象,而list不可用。例如:

>>> data_list = [1, 2, 3]   # All numbers, works fine
>>> set(data_list)
{1, 2, 3}


>>> data_list = [1, 2, 3, [1, 2, 3]]   # Has `list` as an element
>>> set(data_list)                     # Raises `TypeError`
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

为了使其工作,您可以将嵌套列表转换为tuple

>>> data_list = [1, 2, 3, (1, 2, 3)]
#                          ^  It is `tuple` instead of `list`
>>> set(data_list)       # works fine
{1, 2, 3, (1, 2, 3)}

有关详情,请阅读:Otto's Answer to "Python: Add list to set?"