选list还是dict取决于访问方式:需按索引/顺序操作(如追加、切片)用list;需通过键名快速查找(如用户信息、词频统计)用dict,因dict提供O(1)查找且语义清晰。

选 list 还是 dict,关键看你要存什么、怎么用它。
用 list:按顺序存东西,靠位置找
当你需要保持插入顺序、按索引访问(比如第1个、第3个)、或者做追加、切片、遍历等操作时,list 更自然。它本质是个有序的容器。
- 比如记录用户最近5次搜索词:
search_history = ["python", "dict vs list", "pandas merge", "flask tutorial"]——你关心的是“最新的一条在末尾”,或“倒数第二条是什么” - 需要循环处理所有项,且顺序重要(如步骤列表、日志行)
- 允许重复值(比如多次点击“刷新”,日志里就可能有多个
"refresh")
用 dict:按名字(键)存东西,靠名字找
当你想通过一个明确的标识快速定位某个值,而不是数它是第几个,那就该用 dict。它的核心优势是 O(1) 平均查找速度,以及语义清晰的键值映射关系。
- 比如保存用户信息:
user = {"name": "Alice", "age": 30, "city": "Beijing"}——你不会说“第0个字段是名字”,而是直接写user["name"] - 统计词频:
word_count = {"hello": 5, "world": 3}——键是单词,值是次数,查"hello"出来就是 5 - 配置项、映射表、缓存结果(key 是输入,value 是计算结果)
别硬套:有些场景 list 和 dict 都能用,但语义不同
比如存三个人的分数:
立即学习“Python免费学习笔记(深入)”;
-
scores = [85, 92, 78]—— 你只关心“第一个人多少分”“最高分是多少”,不关心是谁的 -
scores = {"Alice": 85, "Bob": 92, "Charlie": 78}—— 你随时要查“Alice 得了多少分”,名字本身有意义
如果后来要支持按姓名查分,却用了 list,就得写 names = ["Alice", "Bob", "Charlie"]; scores[names.index("Alice")]——慢、易错、难读。
性能和限制也要留意
list 查找某个值(if x in my_list)是 O(n),数据一多就慢;dict 的 if key in my_dict 是 O(1)。但 dict 键必须是不可变类型(str、int、tuple),不能用 list 或 dict 当键。
- 要频繁判断“某个元素是否存在”,优先考虑 dict(或 set,它本质是只存键的 dict)
- 需要排序、分片、批量增删尾部,list 更合适
- 不确定用哪个?先问自己:“我主要靠序号找,还是靠名字(含义)找?”——答完基本就清楚了










