课程主题
- 讲师:小甲鱼
- 内容:Python字典的内建方法详解
- 课前回顾:字典是Python唯一映射类型,支持键值对动态增删,工厂函数
dict()创建实例
字典的创建方法拓展:fromkeys()
- 功能:创建并返回新字典
- 参数:
fromkeys(seq[, value])- seq:字典的键序列
- value:可选,所有键对应的值,默认
None
- 示例
dict1 = {}.fromkeys((1,2,3))→{1:None, 2:None, 3:None}dict1 = {}.fromkeys((1,2,3), 'number')→{1:'number', 2:'number', 3:'number'}
- 注意事项
- value是整体赋值,不会按序列拆分
- 该方法生成新字典,不会修改原字典
字典的访问与遍历方法
- keys():返回字典所有键的引用
- 用法:
for k in dict1.keys(): print(k)
- 用法:
- values():返回字典所有值的引用
- 用法:
for v in dict1.values(): print(v)
- 用法:
- items():返回字典所有键值对(元组形式)
- 用法:
for k,v in dict1.items(): print(k,v)
- 用法:
字典的键值查询方法
- get():安全查询键对应的值
- 格式:
dict.get(key[, default]) - 特点:键不存在时返回
default(默认None),不报错 - 对比:直接索引
dict[key]键不存在会触发KeyError
- 格式:
- 成员资格判断:
in / not in- 作用:判断键是否存在于字典中
- 优势:比序列的成员判断更高效
- 示例:
31 in dict1→True;32 in dict1→False
字典的清空方法:clear()
- 功能:清空原字典的所有键值对
- 对比:
dict1 = {}是重新赋值空字典,原字典对象可能仍被引用 - 示例
a = {'name':'小甲鱼'}; b = a; a.clear()→a和b都为空a = {'name':'小甲鱼'}; b = a; a = {}→a为空,b仍指向原字典
字典的拷贝方法:copy()
- 类型:浅拷贝(仅拷贝表层对象)
- 对比:直接赋值
b = a是引用传递,a和b指向同一对象 - 示例
a = {1:1,2:2}; b = a.copy(); c = aid(a) != id(b);id(a) == id(c)- 修改
c[3] = 3,a也会改变;修改c不影响b
字典的删除/弹出方法
- pop():按指定键弹出值,并删除该键值对
- 格式:
dict.pop(key[, default]) - 示例:
a.pop(2)→ 返回2,a中移除键2
- 格式:
- popitem():随机弹出一个键值对(元组形式)
- 特点:字典无序,无"最后一个元素"概念
- 示例:
a.popitem()→ 随机返回一个键值对并删除
字典的新增/更新方法
- setdefault():新增键值对
- 格式:
dict.setdefault(key[, default]) - 特点:键不存在时,添加
key:default;键存在时,返回原值不修改 - 示例:
a.setdefault('小白')→ 添加'小白':None
- 格式:
- update():用新字典更新原字典
- 功能:新字典的键存在则覆盖原值,不存在则新增
- 示例:
a.update({'小白':'一只狗'})→ 更新'小白'对应的值