PYTHON 字典 · 三种常用套路

把杂乱数据整理成答案

计数、分组、反向索引看着像三类题,骨架其实很像:读入一条记录,算出它应该使用的键,再更新这个键对应的值。下面不要急着看最终答案,先让数据一条条经过字典。

原始记录字典答案 关键动作:确定键 → 取旧值 → 写回新值

原始数据

每个词是一条记录;相同词会落到同一个键上。

可以改成自己的词语。空格和换行都能分隔。

这一轮发生了什么

0 / 7

正在读取

尚未开始

字典动作

等待第一条记录

当前字典

0 个键

对应的 Python 写法


        

计数为什么爱用 get

第一次遇到某个词时,旧次数应该当作 0counts.get(word, 0) + 1 正好把“缺少”和“已有”合成一行。

分组为什么爱用 setdefault

每个城市第一次出现时,需要先放一个新空列表;以后再遇到同城的人,直接往已有列表追加。

反向索引“反”在哪

原数据是“文档 → 标签”,查询却常问“这个标签在哪些文档里”。于是把标签改成键,把文档名收集为值。

过来人提醒

不要写成 d.get(key, []).append(value)。键缺少时,get 返回的临时空列表并没有放回字典,追加完就丢了。需要“缺少就创建并保存”时,用 setdefault,或先明确判断键是否存在。

快速自检

要把名字追加进 groups[city],并保证城市第一次出现时自动创建列表,哪一种最直接?