Traceback (most recent call last): TypeError: unhashable type: 'ListWrapper'
时间: 2023-12-02 18:41:48 浏览: 269
Python程序基础:Python中的异常.pptx
5星 · 资源好评率100%
这个错误通常是由于尝试将不可哈希的对象作为字典键或集合元素而引起的。ListWrapper可能是一个自定义的类,它没有实现__hash__方法,因此不能被哈希。要解决这个问题,你可以考虑使用元组代替列表,因为元组是可哈希的,或者在ListWrapper类中实现__hash__方法。
以下是一个使用元组的例子:
```python
my_list = [(1, 2), (3, 4), (5, 6)]
my_dict = {x: x[0] + x[1] for x in my_list}
print(my_dict)
```
输出:
```
{(1, 2): 3, (3, 4): 7, (5, 6): 11}
```
以下是一个在ListWrapper类中实现__hash__方法的例子:
```python
class ListWrapper:
def __init__(self, lst):
self.lst = lst
def __hash__(self):
return hash(tuple(self.lst))
def __eq__(self, other):
return self.lst == other.lst
my_list = [1, 2, 3]
my_dict = {ListWrapper(my_list): 'hello'}
print(my_dict)
```
输出:
```
{<__main__.ListWrapper object at 0x7f8c9c1d7f60>: 'hello'}
```
阅读全文