TypeError: unhashable type: 'list'可是出现这个错误是怎么回事呢
时间: 2023-09-24 20:12:52 浏览: 167
在 Python 中,字典的键必须是可哈希的(hashable),也就是说,键必须是不可变的对象,如字符串、数字、元组等。而列表是可变的对象,因此不能作为字典的键。
如果你使用了列表作为字典的键,并且出现了 `TypeError: unhashable type: 'list'` 的错误,那么很可能是因为你使用了列表作为字典的键。你可以考虑使用其他可哈希的对象作为键,或者将列表作为字典的值。
如果你确实需要使用列表作为字典的键,可以考虑使用元组,因为元组是不可变的对象,可以作为字典的键。例如,`tempdict[(1, 2, 3)] = [4, 5, 6]` 就是一个将元组 `(1, 2, 3)` 作为键,将列表 `[4, 5, 6]` 作为值的字典赋值操作。
相关问题
TypeError: unhashable type: 'list'
这个错误通常发生在试图使用可变对象(比如列表)作为字典键或集合元素时。因为这些对象是可变的,它们的哈希值也可能发生变化,所以不能作为不可变对象使用。
以下是一个例子:
```python
my_list = [1, 2, 3]
my_dict = {my_list: 'value'}
```
在这个例子中,我们试图将一个列表作为字典的键,但是列表是可变的,所以不能作为键。如果我们运行这段代码,就会抛出“TypeError: unhashable type: 'list'”错误。
为了解决这个问题,可以将列表转换为元组,因为元组是不可变的,可以作为字典键或集合元素:
```python
my_list = [1, 2, 3]
my_dict = {tuple(my_list): 'value'}
```
这样就不会再出现“TypeError: unhashable type: 'list'”错误了。
python报错:TypeError: unhashable type: 'list'
这个错误通常发生在尝试使用列表作为字典或集合的键时。因为列表是可变对象,而字典和集合只能使用不可变对象作为键。
例如,以下代码会引发 TypeError: unhashable type: 'list' 错误:
```
my_dict = {[1, 2]: 'value'}
```
解决方法是使用不可变对象作为键,例如元组:
```
my_dict = {(1, 2): 'value'}
```
或者将列表转换为元组再使用:
```
my_dict = {tuple([1, 2]): 'value'}
```
阅读全文