Skip to content

Latest commit

 

History

History
294 lines (213 loc) · 4.79 KB

File metadata and controls

294 lines (213 loc) · 4.79 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0133
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

字典类型

回忆

  • 上次学习了字典
    • 字典可以读取和赋值
      • 键的列表 keys()
      • 值的列表 values()
      • 字典项的列表 items()
    • 字典项可以增删改
      • 直接 用key 索引
      • del 删除字典项
      • update函数

图片描述

  • 可以用 字典 更新字典 吗??🤔

查询文档

  • 我想手动给字典添加
    • 键值对
    • key-value pair
    • 可以么?

图片描述

  • update
    • 可以用字典
    • 更新字典

字典更新

  • 字典的合并使用 update
    • 两本字典放在一起
    • 合成一本字典
    • union 并集
d1 = {"a": 1}
d2 = {"b": 2}
d1.update(d2)
d1
  • 字典 是 把参数字典
    • 合并过来
    • 让字典添加 新字典项

图片描述

  • 但是如果 两个字典
    • 同一key的值 一致
    • 会如何呢?

字典更新

  • 试试
d1 = {"a": 1}
d2 = {"a": 2}
d1.update(d2)
d1
  • 以后面的为准吗
    • 用d2更新d1么

图片描述

  • 相当于
    • d1["a"] = 2
    • 一个key只能有一个值
    • 所以这个字典项被更新了
    • 毕竟update就是更新的意思

关键字参数

help(dict.update)
  • 查询帮助

图片描述

  • 想要d1、 d2 保持原样
    • 返回一个新字典

快速写法

d1 = {"a": 1, "b": 2}
d2 = {"a": 2, "c": 3}
merge_dict = {**d1, **d2}
merge_dict
d1
d2
  • 效果

图片描述

  • 这 **d1 怎么理解?

字典解包

  • **d1 是 字典解包
    • **d2 也是 字典解包
merge_dict = {**d1, **d2}
  • 把两个 解包后的字典
    • 组合成 新字典merge_dict
    • d1、d2都没有改变
  • 除了 update
    • 还有一个 setdefault 命令
    • 也可以 添加字典项

setdefault

d = dict()
d.setdefault("name", "oeasy")
d
  • 试试 设置 默认值

图片描述

  • 怎么理解默认呢?

默认 default

  • 查看帮助
help(dict.setdefault)
  • 如果 没这个key
    • 就 插入这个key
    • 并返回这个默认值

图片描述

  • 如果 有这个key
    • 再想 设置新的值 是不行的
    • 返回 原来的默认值

实践

d = {}
d.setdefault("name", "oeasy")
d.setdefault("name", "o2z")
d["name"]
  • 缺省设置

图片描述

  • 虽然有默认值
    • 也还想要更新
    • 该怎么办 呢?

赋值

d = dict(name = "oeasy")
d
  • 有两种方式 强制更新字典
    1. update
    2. 通过key索引后 赋值
d.update(name = "o2z")
d
d["name"] = "o3z"
d
d.setdefault("name", "o4z")
d
  • 这两种设置
    • 和setdefault不同
    • setdefault是 试着设置 字典项

图片描述

  • 那 有没有 试着获取 呢?

问题

d = dict(one=1)
d
d["one"]
d["two"]
  • 用传统的dict[key]获取
    • 不存在的key

图片描述

  • 如果我们用传统方法
    • 就会出现KeyError😱
  • 去查文档

查询

  • 查询dict帮助手册
help(dict)
  • /get
    • 查询手册中的get
  • n
    • 下一个字符

图片描述

  • 有这个字典项
    • 返回相应的值

图片描述

  • get 一个 不存在的key
    • 返回 default
    • default 默认为None
  • 如果 default 不等于 None呢?

default

d = dict(oeasy = 1)
d.get("o2z")
d.get("o2z", 2)
  • get 是 试着来

图片描述

  • 和 setdefaul很像
    • 都是试着来
    • setdefault 是 试着设置字典项
    • get是试着返回字典项
  • 返回不了就返回默认值default
    • default参数为默认返回值

总结

  • 这次学习了字典
    • 字典可以更新
      • update
      • {**d1,**d2}
  • 可以试着来
    • 试着设置字典项
      • setdefault
    • 试着获取字典项
      • get
  • 字典还可以直接赋值

图片描述

  • 可以把 字典 遍历一遍吗?🤔
  • 下次再说!👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。