Python的映射类型介绍

news/2024/7/16 5:21:09 标签: python

dict类型是Python语言的基石,至关重要。Python对它做了高度优化,散列表是字典类型性能出众个跟本原因。

collection.abc 模块里面有Mapping和MutableMapping这两个抽象基类,他们的作用为dict和类似的类型提供形式接口。其他的映射类型,一般不会直接继承这两个抽象基类,会直接对dict就行扩展。

from collections import abc

print(isinstance({}, abc.Mapping))
print(isinstance({}, abc.MutableMapping))
打印
True
True

Python标准库里面的映射类型都是用dict实现的,有个限制是映射里的键只能为可散列的数据类型,(值没有这个限制)。

 

什么是可散列?

如果一个对象是可散列的,那么在这个对象的生命周期中,他的散列值是不可变的,而且需要实现__hash__()方法,还有__eq__()方法用于键的比较。散列值就是对象hash()函数的返回值。

可散列类型包括:不可变数据类型str、bytes、数值型、frozenset(frozenset的定义就是只能容纳可散列类型)、还有元组(前提是其中的元素必须都是可散列的)

t1 = (1, 2, (3, 4))# 可散列的
print(hash(t1))  

t2 = (1, 2, [3, 4])# 不可散列的
print(hash(t2))
打印
1229485614
Traceback (most recent call last):
  File "D:/PycharmProjects/hello/test2.py", line 12, in <module>
    print(hash(t2))
TypeError: unhashable type: 'list'

 


http://www.niftyadmin.cn/n/1662878.html

相关文章

零基础入门MATLAB(一篇十分钟)

目录 一、复数 二、取整函数 三、无穷量&#xff08;Inf&#xff09;和非数值量&#xff08;NaN&#xff09; 四、逻辑类型 五、字符和字符串 六、函数句柄 七、结构体 八、数组类型 九、单元数组 十、map容器类型 参考《MATLAB R2020a 完全自学一本通》 一、复数 …

【Vue.js学习笔记】4:事件修饰符,键盘事件,键值修饰符

事件修饰符 在Vue的官方文档中给出了引入v-on:的事件修饰符的理念是&#xff0c;不希望在方法中去处理DOM细节。 事件冒泡 事件在事件源上发生&#xff0c;处理事件的方法并未绑定在该事件源上&#xff0c;事件就要向外或者向内传播&#xff08;propagation&#xff09;&…

(C/C++)线程基本概念、如何创建多线程

目录 一、线程基本概念 二、为什么使用多线程 1.避免阻塞 2.避免CPU空转 3.提升效率 三、创建线程函数 1.CreateThread 2._beginthreadex 四、简单多线程示例 一、线程基本概念 线程是在进程中产生的一个执行单元&#xff0c;是CPU调度和分配的最小单元&#xff0c;其…

【Vue.js学习笔记】5:双向数据绑定,计算属性

双向数据绑定 双向数据绑定往往会用到input、select、textarea等表单标签上&#xff0c;因为总是涉及一个数据数据的地方和输出数据的地方。 当数据发生变化的时候&#xff0c;视图也就发生变化&#xff0c;当视图发生变化的时候&#xff0c;数据也会跟着同步变化。 数据双向绑…

Python字典的setdefault()方法来处理找不到的键:统计记录每个单词出现的次数和坐标

字典的setdefault()方法&#xff0c;来处理找不到的键。 此方法总会让字典返回key对应的value&#xff0c;如果字典中有对应的key就从字典中取值&#xff0c;如果没有对应的key就会把value设置default&#xff0c;然后再返回。注意&#xff0c;这样字典中已经增加了新的键值对…

【Vue.js学习笔记】6:动态绑定CSS样式,条件渲染和v-show

动态绑定CSS样式 这部分涉及官方文档中的Class与Style绑定。 index.html <!DOCTYPE html> <html lang"en" xmlns:v-bind"http://www.w3.org/1999/xhtml" xmlns:v-on"http://www.w3.org/1999/xhtml"> <head><meta charse…

【Vue.js学习笔记】7:v-for渲染,Vue的小Demo

v-for渲染 v-for是Vue中常用的列表渲染方法&#xff0c; 可以将一个列表渲染为一系列的HTML元素&#xff0c;也可以用来遍历对象内的k-v对。另外关于模板元素渲染在官方文档上见这里。 index.html <!DOCTYPE html> <html lang"en"> <head><m…

Python处理字典找不到的键defaultdict(默认值字典)

映射方法除了dict&#xff0c;还有常见的OrderDict&#xff08;有序字典&#xff09;、defaultdict(默认值字典)&#xff0c;他们的方法基本相同&#xff0c;只有个别差异。 比如defaultdict 实现了一个d.__missing__(k)方法&#xff0c;当d.__getitem__(k)找不到对应键的时候…