核心内容摘要
520886暗示什么意思
Python 学习之路 —— 字典dict详解从零基础到能熟练使用常见场景
风格写法字典是 Python 中使用频率极高的数据结构几乎可以说是“Python 程序员的瑞士军刀”。
字典的核心概念一句话
总结无序
7 有序、可变、键值对映射键key → 值value的映射关系键必须是不可变类型值可以是任意类型# 最直观的理解方式d{name:小明,age:18,is_student:True,scores:[88,92,95],address:{city:上海,street:浦东新区}}
创建字典的 7 种常见写法按使用频率排序序号写法适用场景Python 版本要求1{k1:v1, k2:v2}最常用、最直观全版本2dict() 关键字参数键是合法标识符时很简洁全版本3dict([(k1,v
, (k2,v
])从列表/元组对创建全版本4{k:v for k,v in 可迭代对象}字典推导式最强大
05dict.fromkeys(keys, default)快速创建大量相同默认值的键全版本6dict(zip(keys, values))两个等长列表/元组合并成字典全版本7collections.defaultdict访问不存在的key时自动创建默认值需要 import# 写法对比示例d1{a:1,b:2,c:3}d2dict(a1,b2,c
# 注意这里键不用加引号d3dict([(x,
,(y,
])d4{k:k*2forkinrange(
}# {0:0, 1:2, 2:4, 3:6, 4:8}d5dict.fromkeys([name,age,city],None)# 常用于初始化模板d6dict(zip([id,name,score],[1001,Tom,
8
5]))fromcollectionsimportdefaultdict d7defaultdict(int)# 不存在的键默认返回 0d7[count]1
字典最常用的 12 个操作强烈建议背下来操作类型写法示例说明 / 常见用途是否修改原字典新增/修改d[new_key] value最常用写法是新增/修改d.update({k1:v1, k2:v2})批量更新可传入 dict/列表/关键字参数是获取d[key]键不存在 → KeyError否获取安全d.get(key, 默认值)键不存在返回默认值默认 None否获取安全d.setdefault(key, 默认值)不存在则设置默认值并返回是可能删除del d[key]键不存在 → KeyError是删除d.pop(key, 默认值)键不存在返回默认值默认引发 KeyError是删除并清空d.popitem()
7 删除并返回最后一对LIFO是清空d.clear()清空所有元素是长度len(d)键值对数量否成员判断key in d/key not in d判断键是否存在最快 O(
否遍历for k in d:默认遍历所有键否
字典遍历的 4 种主流写法对比面试日常高频d{name:Alice,age:25,city:Beijing}#
只遍历 key最常用forkind:print(k,d[k])#
显式遍历 keyforkind.keys():print(k)#
遍历 valueforvind.values():print(v)#
同时拿到 key 和 value**最推荐**fork,vind.items():print(f{k:8}:{v})
Python
7 最重要的两个变化必须知道插入顺序保证从
7 开始官方保证
6 是实现细节字典按照插入顺序迭代和显示dict.keys()、dict.values()、dict.items()也保持插入顺序更高效的实现CPython 整体优化
字典常见使用场景 优雅写法真实项目高频# 场景1计数分组统计fromcollectionsimportCounter# 更推荐# 或纯 dict 实现count{}foritemin[apple,banana,apple,cherry,banana,apple]:count[item]count.get(item,
1# 场景2分组按某属性分组fromcollectionsimportdefaultdict groupsdefaultdict(list)forstudentinstudents:groups[student[class]].append(student[name])# 场景3配置 / 参数映射settings{debug:True,log_level:INFO,max_retries:3,timeout:
3
0}# 场景4快速查找代替 if-elif 很多层status_code_meaning{200:OK,404:Not Found,500:Server Error,429:Too Many Requests}
字典 vs 其他数据结构的对比面试常考需求推荐结构原因 / 优势需要按插入顺序遍历dict (
3.