小甲鱼Python学习笔记

课程主题

  • 讲师:小甲鱼
  • 内容: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是整体赋值,不会按序列拆分
    • 该方法生成新字典,不会修改原字典

字典的访问与遍历方法

  1. keys():返回字典所有键的引用
    • 用法:for k in dict1.keys(): print(k)
  2. values():返回字典所有值的引用
    • 用法:for v in dict1.values(): print(v)
  3. items():返回字典所有键值对(元组形式)
    • 用法:for k,v in dict1.items(): print(k,v)

字典的键值查询方法

  1. get():安全查询键对应的值
    • 格式:dict.get(key[, default])
    • 特点:键不存在时返回default(默认None),不报错
    • 对比:直接索引dict[key]键不存在会触发KeyError
  2. 成员资格判断in / not in
    • 作用:判断是否存在于字典中
    • 优势:比序列的成员判断更高效
    • 示例:31 in dict1True32 in dict1False

字典的清空方法:clear()

  • 功能:清空原字典的所有键值对
  • 对比:dict1 = {} 是重新赋值空字典,原字典对象可能仍被引用
  • 示例
    • a = {'name':'小甲鱼'}; b = a; a.clear()ab都为空
    • a = {'name':'小甲鱼'}; b = a; a = {}a为空,b仍指向原字典

字典的拷贝方法:copy()

  • 类型:浅拷贝(仅拷贝表层对象)
  • 对比:直接赋值b = a是引用传递,ab指向同一对象
  • 示例
    • a = {1:1,2:2}; b = a.copy(); c = a
    • id(a) != id(b)id(a) == id(c)
    • 修改c[3] = 3a也会改变;修改c不影响b

字典的删除/弹出方法

  1. pop():按指定键弹出值,并删除该键值对
    • 格式:dict.pop(key[, default])
    • 示例:a.pop(2) → 返回2a中移除键2
  2. popitem():随机弹出一个键值对(元组形式)
    • 特点:字典无序,无"最后一个元素"概念
    • 示例:a.popitem() → 随机返回一个键值对并删除

字典的新增/更新方法

  1. setdefault():新增键值对
    • 格式:dict.setdefault(key[, default])
    • 特点:键不存在时,添加key:default;键存在时,返回原值不修改
    • 示例:a.setdefault('小白') → 添加'小白':None
  2. update():用新字典更新原字典
    • 功能:新字典的键存在则覆盖原值,不存在则新增
    • 示例:a.update({'小白':'一只狗'}) → 更新'小白'对应的值