Python

Python 四种核心容器怎么选

从顺序、可变性、去重和键值映射出发,建立列表、元组、集合和字典的选择逻辑。

先看一个具体问题

假设一批模型名称中既有重复项,又要保留第一次出现的顺序:

models = ["qwen", "deepseek", "qwen"]
unique_models = list(dict.fromkeys(models))

最终得到 ['qwen', 'deepseek']。这里没有直接使用集合,因为集合去重后不负责表达原始顺序。

四种容器分别解决什么

  • 列表 list:有顺序、可修改,适合保存需要按位置访问的一组数据。
  • 元组 tuple:有顺序、容器结构不可修改,适合表达固定结构。
  • 集合 set:元素唯一,适合去重和集合运算。
  • 字典 dict:通过键寻找值,适合保存结构化字段。

容易混淆的边界

切片会创建一个新的外层列表,但其中的可变对象仍可能与原列表共享引用。dict.get() 只是在键不存在时提供默认值,不等于数据校验。

选择容器时先问:我要保留顺序吗?需要修改吗?元素必须唯一吗?是按位置还是按名称取值?