python里的TypeError: unhashable type: ‘list‘解决方法

        今天在写spark一个实验时,我在用map自定义key和value后,想通过相同的key实现分组,结果碰到了以下问题:

python里的TypeError: unhashable type: ‘list‘解决方法_第1张图片

        我们平时map自定义key,value时会取一个值,这种情况下继续操作没有问题

python里的TypeError: unhashable type: ‘list‘解决方法_第2张图片

        但是当我们的数据取两列作为key时,它的key的类型就会变为列表

python里的TypeError: unhashable type: ‘list‘解决方法_第3张图片

         这时候如果要进行针对于可以的操作,就会出现上方所说的“TypeError: unhashable type: 'list'”,查看了一些其他资料后发现 Python不支持dict的key为list或set或dict类型,因为list和dict类型是unhashable(不可哈希)的。

python里的TypeError: unhashable type: ‘list‘解决方法_第4张图片

         解决方法是将list强制转换为tuple

python里的TypeError: unhashable type: ‘list‘解决方法_第5张图片

         这时候在查看,可以正常运行啦!

hash()是内置的python方法,用于返回唯一的number。 可以将其应用于任何用户定义的对象,这些对象一旦初始化就不会更改。 此属性主要在字典键中使用。

另外:

Tuple and List
尽管tuple看起来类似于list,但是它们通常用于不同的情况和不同的目的。 tuple是不可变的,并且通常包含通过unpacking 或者 indexing访问的元素的异类序列。 list是可变的,并且它们的元素通常是同类的,并且可以通过遍历列表来访问。
2. hashing
hashing是计算机科学中的一个概念,用于创建高性能的伪随机访问数据结构,在该结构中要快速存储和访问大量数据。 不可变的对象或无法更改的对象是可哈希的,并且它们具有一个永远不变的唯一值。 哈希函数是一种函数,它接受一个对象(例如字符串,例如“ Java”)并返回固定大小的代码,并假定返回值为整数。

原文链接:https://blog.csdn.net/low5252/article/details/109381745

 

你可能感兴趣的:(安装遇到的问题,python,spark)