Python Mapping类型介绍(Mapping抽象接口、Mapping接口、__getitem__、__iter__、defaultdict、OrderedDict、ChainMap)
文章目录Python Mapping 类型详解一、Mapping 类型的基本概念二、内置 Mapping 类型dict1. 创建字典2. 访问与修改3. 常用方法4. 遍历字典三、Mapping 的抽象基类四、标准库中的其他 Mapping 类型1. defaultdict2. OrderedDict3. ChainMap4. MappingProxyType五、Mapping 的底层实现dict六、使用建议与最佳实践1. 使用不可变对象作为键2. 优先使用 get 避免异常3. 使用字典推导式4. 合并字典Python 3.9七、总结Python Mapping 类型详解在 Python 的数据模型中Mapping映射类型是一类用于存储“键—值”key-value关系的数据结构。它允许通过唯一的键快速访问对应的值是构建配置、索引、缓存等场景的核心工具。最常见的 Mapping 类型是内置的dict字典此外标准库中还提供了多种扩展映射类型以适应不同需求。一、Mapping 类型的基本概念Mapping 类型的核心特征包括键唯一Key Uniqueness每个键在映射中只能出现一次键可哈希Hashable键必须是不可变对象如int、str、tuple值可任意Value Flexibility值可以是任意类型无序或有序视实现而定Python 3.7 中dict保持插入顺序从抽象角度来看Mapping 类似数学中的函数key → value二、内置 Mapping 类型dict1. 创建字典# 使用字面量d{name:Alice,age:25}# 使用 dict 构造函数ddict(nameAlice,age25)# 从键值对序列创建ddict([(name,Alice),(age,25)])2. 访问与修改d[name]# 获取值d[age]26# 修改值d[city]NY# 添加新键值对若访问不存在的键会抛出异常d[salary]# KeyError推荐使用d.get(salary,0)# 返回默认值 03. 常用方法d.keys()# 返回所有键d.values()# 返回所有值d.items()# 返回键值对d.pop(age)# 删除并返回值d.update({age:30})# 更新字典4. 遍历字典forkey,valueind.items():print(key,value)三、Mapping 的抽象基类Python 在collections.abc模块中定义了 Mapping 的抽象接口fromcollections.abcimportMapping一个对象若实现以下方法即可视为 Mapping__getitem__(self, key)__iter__(self)__len__(self)这使得开发者可以自定义映射类型。四、标准库中的其他 Mapping 类型1. defaultdictfromcollectionsimportdefaultdict ddefaultdict(int)d[count]1# 自动初始化为 0适用于计数、分组等场景。2. OrderedDictfromcollectionsimportOrderedDict在 Python 3.7 之前用于保持插入顺序现在更多用于特殊排序控制。3. ChainMapfromcollectionsimportChainMap a{x:1}b{y:2}cChainMap(a,b)用于将多个字典视为一个整体如作用域查找。4. MappingProxyTypefromtypesimportMappingProxyType d{a:1}proxyMappingProxyType(d)提供字典的只读视图。五、Mapping 的底层实现dictPython 的dict基于哈希表Hash Table实现其核心机制对 key 计算哈希值hash(key)根据哈希定位存储位置通过冲突解决如开放寻址保证查找效率其平均时间复杂度操作时间复杂度查找O(1)插入O(1)删除O(1)六、使用建议与最佳实践1. 使用不可变对象作为键# 推荐d[(1,2)]point# 不推荐d[[1,2]]point# TypeError2. 优先使用 get 避免异常valued.get(key,default)3. 使用字典推导式squares{x:x*xforxinrange(5)}4. 合并字典Python 3.9d3d1|d2七、总结Mapping 类型是 Python 中最核心的数据结构之一其代表dict以高效的哈希表实现提供了快速的数据访问能力。通过标准库中的扩展类型如defaultdict、ChainMap等可以灵活应对不同应用场景。掌握 Mapping 的使用不仅有助于写出更高效的代码也能提升程序的结构化和可维护性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428004.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!