python遇到TypeError: unhashable type: ‘list‘

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。 可以将其应用于任何用户定义的对象,这些对象一旦初始化就不会更改。 此属性主要在字典键中使用。

另外:

  1. 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!

猜你喜欢

转载自blog.csdn.net/low5252/article/details/109381745