Skip to content

Latest commit

 

History

History
455 lines (322 loc) · 9.39 KB

File metadata and controls

455 lines (322 loc) · 9.39 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0130
- 这是 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` 
---

字典类型

回忆

  • 集合操作
英文单词 中文释义
add 添加
clear 清空
remove 指定删除
discard 丢弃(删除)
pop 弹出
  • 集合运算
运算类型 基础运算符 增强赋值运算符 对应方法名
交集 & &= intersection
并集 | |= union
差集 - -= difference
对称差集 ^ ^= symmetric_difference
  • 集合之间可以判断
运算类型 英文描述 运算符
是否有交集 isdisjoint
是否是子集 issubset <=
是否是超集 issuperset >=

图片描述

  • 遇到这么个问题
    • {}并不是空集
    • 而是一个dict

回忆

符号 例子 类型名 英文名 是否可变 是否有序 可否重复
小括号 (0, 1) 元组 tuple 不可变 有顺序 可重复
中括号 [0, 1] 列表 list 可变 有顺序 可重复
大括号 {0, 1} 集合 set 可变 无顺序 不可重复

图片描述

  • 一对 空的 大括号
    • 并不是 空集
    • 而是一个 dict
  • dict 是 什么 类型 ?

音高与时值

图片描述

  • 将 123
    • 定义成 具体的音高
# 音符对应字典,按简谱 1 - 7 对应 F 调下的音符(1=F 时的对应)
NOTE_MAP = {
    '1': 65, '2': 67, '3': 69, '4': 70,
    '5': 72, '6': 74, '7': 76
}

# 定义强弱规律(四四拍:强=90,弱=50,次强=70,最弱=40)
BEAT_VELOCITY = {
    1: 90,   # 第一拍(强)
    2: 50,   # 第二拍(弱)
    3: 70,   # 第三拍(次强)
    4: 50    # 第四拍(弱)
}

帮助手册

  • dict 代表着
    • dictionary
    • 字典

图片描述

  • 构造方法
    • 需要一个key和value的pair
dict(one=1, two=2)
  • one、two 就是 key
    • 1、2 就是 value

试试

  • 通过 key 查到 key所 对应的value
    • 通过 "one" 可以查到 1
    • 通过 "two" 可以查到 2
d["one"]
d["two"]
  • 要查的 是 one

图片描述

  • 查one 得到 1
    • one 和 1 之间
    • 有 mapping(映射)关系

通讯录

  • 我记得住 人名
    • 但我 记不住 电话
    • 这些人名 是 没有前后顺序 的

图片描述

  • 建个 通信录

通信录

contacts = dict(oeasy="123", o2z="456")
contacts
  • dict方法 给字典变量赋初值

图片描述

  • 可以 直接 赋值 吗?

直接赋初值

  • 直接 把值赋过去
contacts = {"oeasy":123, "o2z"=456}
contatcts
  • 效果一样

图片描述

  • 元组、列表、字符串
    • 好像也有 索引
    • 有什么区别呢?

回忆列表

  • 列表能用数字
    • 作为索引
lst = list("oeasy")
lst
lst[0]
lst[4]
  • 列表是有序的序列
    • 根据序号数字进行索引
    • 通过序号数字找到列表项返回

图片描述

  • 超出列表范围报IndexError
    • 索引错误

图片描述

  • 那字典 怎么索引 的呢?

查询字典

  • 列表 用 数字序号索引
    • 字典 用 key进行索引
contacts = {"oeasy":123, "o2z"=456}
contacts["oeasy"]
contacts["o2z"]
  • 根据 key
    • 就能查到key对应的 value
    • 所用的运算符 是 索引运算符[]

图片描述

  • 字典 啥时候报 索引错误 呢?

索引不存在的值

  • o3z 不是 字典的key
contacts["o3z"]
  • 字典 根据 键(key) 进行索引
    • 通过 键(key) 来找到 相应的字典项

图片描述

  • 如果 key 不存在
    • 没法索引
    • 报KeyError
      • 键错误
  • key很重要!!!

key

  • 字典dict
    • 用 key 索引

图片描述

  • key 怎么理解?

key

  • key 就是钥匙

图片描述

  • 这钥匙 干嘛 用的?

开锁

  • 钥匙开锁

图片描述

  • 钥匙是和锁 配对的

    • 有钥匙 才能开锁
    • 开了锁 就可以找到value
  • 按一下 触发一个功能 就叫key

    1. 开门的 钥匙
    2. 钢琴的 琴键
    3. 电脑键盘的 按键
  • 联系人的信息

    • 除了 电话 之外
    • 可能 还包括 地址

通讯录

图片描述

  • 人名 映射到 电话和地址元组
    • 人名:(地址,电话)
d = {"oeasy": (123, "bj"), "o2z": (456, "sh")}
  • 通过"oeasy"可以 映射到 详细信息元组
    • 元组 第0个元素 是 电话
    • 元组 第1个元素 是 地址

图片描述

  • 一个key 能开 两把锁 吗?

尝试

  • 一个 key 可以对应
    • 两个不同的 value 么?
    • 试试

图片描述

  • key 只能有一个
    • 后面的 会更新(update) 前面的

图片描述

新单词总结

英文术语 中文翻译
dictionary 字典
key
value
item
mapping 映射

图片描述

  • 在古代
    • 典 不是 随便谁都能编的
  • 典 这个词怎么来的呢?

  • 典一般都是很有分量的
    • 经典
    • 典籍
    • 典范
    • 用典
    • 引经据典

图片描述

  • 左右 两只手
    • 中间 拿着册
      • 册 是 古代的判例、案例
    • 盛典
    • 大典
    • 典狱长
    • 典当行
    • 都是 靠典 的

最早的中文字典

  • 公元100年
    • 许慎写出《说文解字》

图片描述

  • 英文中 dictionary 怎么来的呢?

dictionary

  • 字典这个词来自于拉丁语
    • 意思是 单词和短语的 集合

图片描述

  • 1220年
    • Johannes de Garlandia
      • 加兰的约翰
      • 他来自英国
      • 后在法国教拉丁文
    • 编写 第一本 拉丁语字典
  • 为什么 不编 英文或法文字典 呢?

拉丁语

  • 拉丁文
    • 是 传统书写语言
    • 来自 神圣的教廷总部
    • 有 罗马帝国 战斗力的 背书
  • 英文法文
    • 混合了 日耳曼语、诺尔斯语、拉丁语
    • 的 一种 口语方言

图片描述

  • 盎格鲁-撒克逊 编年史
    • 由 英太祖 阿尔弗雷德 编写
    • 用 盎格鲁撒克逊语 编写
      • 古英语 (诺尔斯语)
    • 从此 大不列颠 成为了 盎格鲁岛(England)
      • 盎格鲁撒克逊 开始有了 民族认同
    • 编书的 时候 还没有英文字典
  • 世界上 第一本英文词典 是 谁编的 呢?

第一本英文词典

  • 1604年
    • 作者 Robert Cawdrey
      • 是 神职人员
      • 普及宗教文化
      • 因为 能识字的人 不多
    • 世界上 第一本 英文词典
      • the Table Alphabeticall
      • 单词表

图片描述

  • 面向“女士、名媛淑女 以及其他技能不熟练人”
    • 创造了一个临时解决方案
    • 列出了 大约2,500个 “较难使用的词汇”
    • 词汇量 还不到 当时常用语的 5%
  • 神学 就是 当时最高 人文科技

首页

  • 前言部分 字体 为 罗马正体

图片描述

  • 和 今天的英语 很像
    • 但是 也有些 不一样

第一个单词

  • 从A到Z
    • 按照字母表顺序 排列
    • 单词字体 是 罗马正体
    • 单词含义 是 哥特字体
      • 向古腾堡致敬

图片描述

  • 词义 比较模糊

    • “饮食”(diet)一词
      • 被描述为“进食的方式”
  • 没有 任何解释性的 例句

    • 更不用说 追溯词源 了
  • 《字母表》的词汇量 非常少

    • 总共37页
    • 字母W 没有任何单词
  • 那我做个 动物的字典吧

字典

d = {
	"cat": "girl-like animal",
	"dog": "boy-like animal",
	"rat": "small animal",
	"elephant": "big animal"
}
  • 编字典
    • 给世界 下定义
    • 真好玩!!

总结

  • 这次 接触了 字典
    • 字典是用来查的
      • 根据一个 key
      • 可以查到相应的 value

图片描述

  • 字典 这个词 怎么来的呢??🤔
  • 下次再说 👋

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