不可用的类型:python中的'list'错误

Kel*_*ubi 6 python list

我有这本字典:

final = {0: [1, 9], 1: [0, 9], 8: [16, 10], 9: [0, 1], 10: [8, 16], 16: [8, 10]}
Run Code Online (Sandbox Code Playgroud)

我想将它转换为列表,所以我使用列表推导,结果如下:

myList = [[int(k)]+v for k, v in final.items()]
myList = [[0, 1, 9], [0, 1, 9], [0, 1, 9], [8, 10, 16], [8, 10, 16], [8, 10, 16]]
Run Code Online (Sandbox Code Playgroud)

我还想要整个列表以及每个小列表中的元素进行排序,并从列表中删除重复项:

for i in myList:
   i.sort()

myList.sort()
list(set(myList))
print(myList)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个时,我得到错误" Unhashable type: 'list' ".有没有其他方法来实现这个?提前谢谢你!

Ant*_*ala 3

列表是可变的;在 Python 中,可变容器是不可散列的。set反过来要求这些项目是可散列的。您可以将列表转换为元组,元组是不可变的容器,因此是可散列的:

>>> myList = [[0, 1, 9], [0, 1, 9], [0, 1, 9], [8, 10, 16], [8, 10, 16], [8, 10, 16]]
>>> list(set(tuple(i) for i in myList))
[(8, 10, 16), (0, 1, 9)]
Run Code Online (Sandbox Code Playgroud)

请注意,集合没有排序,因此您可能需要在创建集合后进行排序:

>>> myList = [[0, 1, 9], [0, 1, 9], [0, 1, 9], [8, 10, 16], [8, 10, 16], [8, 10, 16]]
>>> sorted(set(tuple(i) for i in myList))
[(0, 1, 9), (8, 10, 16)]
Run Code Online (Sandbox Code Playgroud)