python遇到TypeError: unhashable type: ‘list’
今天在写这个泰坦尼克号的时候,出现了这个bug。
后来检查后,才发现Embarked这一列被我改成list类型了,自然不能够hash。因此对原始数据,重新跑一遍后,结果正确。
Examples of hashable objects:
int, float, decimal, complex, bool, string, tuple, range, frozenset, bytes
Examples of Unhashable objects:
list, dict, set, bytearray, user-defined classes
TypeError: unhashable type: 'list'
通常意味着您正在尝试将list
用作哈希参数. 这意味着当你尝试去hash
一个unhashable object
它将会返回一个错误.例如,当您将list用作字典中的键时,将无法完成此操作,因为无法对list
进行hashing
处理。 解决此问题的标准方法是将list
强制转换为tuple
。
my_dict = {'name': 'John', tuple([1,2,3]):'values'}
print(my_dict)
output:
{'name': 'John', (1, 2, 3): 'values'}
hash()
是内置的python
方法,用于返回唯一的number
。 可以将其应用于任何用户定义的对象,这些对象一旦初始化就不会更改。 此属性主要在字典键中使用。
另外:
- Tuple and List
尽管tuple
看起来类似于list
,但是它们通常用于不同的情况和不同的目的。 tuple
是不可变的,并且通常包含通过unpacking
或者 indexing
访问的元素的异类序列。 list
是可变的,并且它们的元素通常是同类的,并且可以通过遍历列表来访问。
2. hashing
hashing
是计算机科学中的一个概念,用于创建高性能的伪随机访问数据结构,在该结构中要快速存储和访问大量数据。 不可变的对象或无法更改的对象是可哈希的,并且它们具有一个永远不变的唯一值。 哈希函数是一种函数,它接受一个对象(例如字符串,例如“ Java”)并返回固定大小的代码,并假定返回值为整数。
Now you’re ready to solve this error like a professional coder!