Python映射类型

2025年1月5日 | 阅读 4 分钟

Python 是一种高级、解释型编程语言,以其简洁和可读性而闻名,非常适合初学者和经验丰富的开发者。由 Guido van Rossum 创建,并于 1991 年首次发布,Python 通过广泛使用缩进来强调代码的可读性。它支持几种编程范式,包括过程式、面向对象和函数式编程。

Python 的动态类型和自动内存管理简化了编码并减少了错误。该语言拥有丰富、知名的库以及大量的第三方程序生态系统,有助于在 Web 开发、数据分析、人工智能、科学计算和自动化等领域进行开发。Python 的多功能性以及活跃的社区使其成为世界上最受欢迎的编程语言之一。

映射

在 Python 中,映射类型是存储键值对的数据结构,其中每个唯一键映射到一个特定的值。主要的映射类型是字典(`dict`),它允许高效地检索、插入和删除数据。字典中的键必须是不可变的且可哈希的,而值可以是任何类型。从 Python 3.7 开始,字典会维护插入顺序。`collections` 模块通过 `defaultdict`(用于自动默认值)、`OrderedDict`(用于有序键存储)和 `ChainMap`(用于将多个字典组合成单个视图)等专用类型增强了映射功能。这些映射类型对于各种编程任务至关重要,在处理关联数组和复杂数据结构时提供了灵活性和性能。

主要特点

  • 动态且可变:支持添加、修改和删除键值对。
  • 键的唯一性:键必须是唯一的且可哈希的(例如,字符串、数字、元组)。
  • 高效访问:为基于键的访问提供 O(1) 的平均时间复杂度。
  • 插入顺序:从 Python 3.7 开始维护插入顺序。
  • 键值对存储:以键值对的形式存储数据,允许关联数组功能。
  • 字典方法
    • `keys()`:返回所有键的视图。
    • `values()`:返回所有值的视图。
    • `items()`:返回所有键值对的视图。
    • `get(key, default)`:如果键存在,则返回 `key` 的值,否则返回 `default`。
    • `pop(key, default)`:删除并返回 `key` 的值,否则返回 `default`。

映射类型

字典('dict')

字典是 Python 中的主要映射类型,它存储键值对。每个键都是唯一的,并映射到一个特定的值。键必须是可哈希的(不可变类型,如字符串、数字和元组)。

特点

  • 动态且可变:允许添加、修改和删除键值对。
  • 高效访问:为基于键的访问提供 O(1) 的平均时间复杂度。
  • 插入顺序:从 Python 3.7 开始维护插入顺序。
  • 多功能:值可以是任何数据类型。

示例

输出

Samantha
dict_keys(['name', 'age', 'country'])
dict_values(['Samantha', 25, 'USA'])
dict_items([('name', 'Samantha'), ('age', 25), ('country', 'USA')])

`defaultdict`(来自 `collections` 模块)

`defaultdict` 是 `dict` 的一个子类,它为不存在的键提供默认值。默认值通过在创建 `defaultdict` 时传递的函数来定义。

特点

  • 自动默认值:通过消除对键存在的检查来简化代码。
  • 灵活:默认工厂可以是任何可调用对象,返回默认值类型。
  • 继承:继承普通字典的所有方法和行为。

示例

输出

defaultdict(<class 'list'>, {'fruits': ['apple']})

`OrderedDict`(来自 `collections` 模块)

`OrderedDict` 是 `dict` 的一个子类,它会保留键插入的顺序。这在顺序很重要的场景中特别有用。

特点

  • 维护插入顺序:键按照它们被插入的顺序返回。
  • 增强方法:提供额外的方法来将元素移动到末尾或开头(`move_to_end`)。

示例

输出

OrderedDict([('one', 1), ('two', 2), ('three', 3)])

`ChainMap`(来自 `collections` 模块)

`ChainMap` 将多个字典组织成单个视图。它允许像处理一个字典一样在多个字典中进行查找。

特点

  • 组合多个字典:方便在多个映射之间进行搜索。
  • 视图:反映底层字典中的更改。

示例

输出

ChainMap({'one': 1, 'two': 2}, {'three': 3, 'four': 4})
1
3

`Counter`(来自 `collections` 模块)

`Counter` 是 `dict` 的一个子类,用于计算可哈希的项。元素存储为字典键,它们的计数作为字典值。

特点

  • 计数元素:简化了对元素的计数和统计。
  • 常用操作方法:包括 `most_common` 等方法来检索最常见的元素。

示例

输出

Counter({'apple': 3, 'banana': 2, 'orange': 1})
3
2