gpt4 book ai didi

python - 不可散列类型 : 'list' error in python

转载 作者:太空狗 更新时间:2023-10-29 22:29:28 25 4
gpt4 key购买 nike

我有这本字典:

final = {0: [1, 9], 1: [0, 9], 8: [16, 10], 9: [0, 1], 10: [8, 16], 16: [8, 10]}

我想把它转换成一个列表,所以我使用了列表理解,结果如下:

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]]

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

for i in myList:
i.sort()

myList.sort()
list(set(myList))
print(myList)

但是,当我运行它时,出现错误“Unhashable type: 'list'”。还有其他方法可以实现吗?提前致谢!

最佳答案

列表是可变的;在 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)]

请注意,集合未排序,因此您可能希望制作集合后进行排序:

>>> 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)]

关于python - 不可散列类型 : 'list' error in python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36164774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com