Skip to content

Latest commit

 

History

History
435 lines (321 loc) · 8.19 KB

File metadata and controls

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

字典类型

回忆

  • 上次了解了 文生图 提示词 程序
    • 通过编号 获得相应的 提示词
    • 再将 提示词 组合起来

图片描述

  • 字典 还能怎么玩呢?🤔

字典中的结构

  • 字典的本质是键值对的集合
d = dict(one=1, two=2)
d
list(d.keys())
list(d.values())
list(d.items())
功能 方法
查看所有键 d.keys()
查看所有值 d.values()
查看所有键值对 d.items()
  • 我可以通过字典生成
    • 键 列表
    • 值 列表
    • 键值对 列表

图片描述

  • 可以 反过来 吗?
    • 根据 keys 和 values
    • 生成dict

构建

  • 两个序列
    • 明确对应关系
keys = ["three", "four"]
values = [3, 4]
z = zip(keys, values)
z
d = dict(z)
d
  • 把 键列表、值列表 缝合

图片描述

  • 在python的官网
    • 也提到过dict的构造方式

构造方法

图片描述

  • 第3行 提到的 就是zip
    • 如何理解 zip 呢?

查询

help(zip)
  • zip就是缝合

图片描述

  • 新列表里的 元素
    • 是 两个列表 对应位置元素的 元组

图片描述

  • zip 可以缝合多个列表吗?

zip

  • zip 可以缝合
    • 序列类
students = ["oeasy", "o2z", "o3z"]
math = [95, 96, 97]
chinese = [91, 92, 93]
score = list(zip(students, math, chinese))
score
  • zip 把 若干个元组的 元素
    • 按位置组合 成 新的元组
    • 直到其中 某个元组 遍历完成
    • zip 的结果可以理解为元组的列表
shuxue = sorted(score, key=lambda x: x[1], reverse=True)
shuxue
  • 可以 直接拿 二维列表
    • 构造 字典(dict) 吗?

动手试试

  • 二维列表
l_animals = [
	["cat", "猫"],
	["dog", "狗"],
	["rat", "鼠"]
]
dongwu = dict(l_animals)
dongwu
  • 可以 把 列表的列表
    • 转化为字典

图片描述

  • 那 元组 的 元组 呢?

二维 元组

t_animals = (
	("cat", "猫"),
	("dog", "狗"),
	("rat", "鼠")
)
dongwu = dict(l_animals)
dongwu
  • 可以把元组的元组转化为字典

图片描述

  • 那么 元组的列表 或者 列表的元组呢?

手动

l_animals = [
	("cat", "猫"),
	("dog", "狗"),
	("rat", "鼠")
]
dongwu = dict(l_animals)
dongwu
  • 元组的列表

图片描述

再试试

  • 列表的元组
t_animals = (
	["cat", "猫"],
	["dog", "狗"],
	["rat", "鼠"]
)
dongwu = dict(l_animals)
dongwu
  • 都没有问题

图片描述

  • 只要满足

    • 内层序列元素 是
    • 一对一 的 键值对 映射关系
    • 就可以 转化为字典
  • 序列类 的 列表和元组

    • 可以转化为字典
  • 字典 可以 转化回来 么?

尝试

d_animals = {'cat': '猫', 'dog': '狗', 'rat': '鼠'}
list(d_animals)
list(d_animals.keys())
  • 把 字典转化成 列表的 时候
    • 默认转化的是 dict.keys()

图片描述

  • 那 values 呢...

values

d_animals.values()
list(d_animals.values())
  • 先用values把值得到
    • 再用list、tuple、set转化就可以

图片描述

  • 想把dict 直接转为 二维列表

转化

  • 把 字典 的 key和value 搞出来
    • 缝合到一起
    • 转化成列表
    • 转化回字典
l_key = list(d_animals)
l_value = list(d_animals.values())
z = zip(l_key, l_value)
lst = list(z)
lst
d = dict(lst)
d
  • 绕了一圈又回去了

图片描述

  • 可以直接用items吗?

items

d_animals = {'cat': '猫', 'dog': '狗', 'rat': '鼠'}
items = d_animals.items()
lst = list(items)
lst
d = dict(lst)
d
  • items 就是
    • 缝合好的keys 和 values

图片描述

  • 可以把key、value 对调位置 吗?

音译汉、汉译英

  • 关键看你怎么缝

  • 如果值 也是唯一的

    • 键值(key-value) 可以对调
    • 依然是一对一的
    • key-value pair
l_han = ["猫", "狗", "鼠"]
l_eng = ["cat", "dog", "rat"]
d_h2e = dict(zip(l_han, l_eng))
d_h2e
d_e2h = dict(zip(l_eng, l_han))
d_e2h
  • 英译汉
    • 倒过来
      • 就是汉译英

图片描述

  • 哪个字典更重要呢?

根据需求

  • 需要 英汉字典 的时候 就用 英译汉
    • 需要 汉英字典 的时候 就用 汉译英

图片描述

  • 最早的 英译汉 和 最早的 汉译英 词典
    • 做的呢?

华英字典

  • 这两本字典
    • 作者是同一个人
      • 马礼逊
  • 1782年
    • 马礼逊 生于苏格兰
    • 曾 在伦敦
    • 跟一位广东人 学汉语
  • 1807年9月
    • 马礼逊 初来广州
    • 当时 中国禁教
    • 为 偷偷传教
    • 马礼逊 希望 融入百姓生活
    • 学习 中国话
  • 1808年6月
    • 返回澳门
    • 马礼逊 已经熟练掌握了
      1. 粤语
      2. 官话

图片描述

  • 1808年开始
    • 马礼逊以《康熙字典》为据
    • 开始编写成了三部分六卷本的《华英字典》

华英字典

  • 《华英字典》
    • 有例句及解释
    • 其中收录大量成语、俗语

图片描述

  • 全书 共6册,共4,595页,分三部分:
    1. 第一部分:共3册
      • 以部首排列的汉英字典
      • 收录汉字字头达四万馀
      • 每汉字下附多音节词和成语
      • 首创自左至右横排
      • 方便中英对照
      • 是为中国第一部横排字典
    2. 第二部分:共2册
      • 是以字母音序排列的汉英同音字典
      • 是为中国最早的同类型同音字典
    3. 第三部分:只1册
      • 是以英文查中文的英汉字典

华英字典

  • 华英字典
    • 是中国境内 最早用西方 铅合金活字排印的 书籍
    • 成为 经典教科书
    • 被 多个出版社 再版

图片描述

  • 字典 里面引用了
    1. 三字经
    2. 论语
    3. 红楼梦

书院

  • 1818年
    • 在马六甲创办英华书院
    • 活字版印刷所
    • 翻译出版《新约全书》、《新旧约全书》

图片描述

  • 1823年12月
    • 梁发 被马礼逊 立为
      • 第一个 基督新教的 中国籍牧师
    • 他 协助马礼逊做印刷工作

劝世良言

  • 1832年

    • 梁发 用中文 写了一本《劝世良言》
      • 宣扬上帝是独一真神
      • 反对儒释道偶像崇拜
      • 讲原罪、耶稣救赎、复活、末日审判
    • 乡试时 派发给 赴考生员
  • 有个 三次府试失利的 落第秀才

    • 通过脑补
    • 解决了 心理问题
    • 成为了 耶稣的弟弟

图片描述

  • 我们先去总结一下

总结

  • 这次理解 了
    • 通过zip缝合序列
    • 然后 转化为 字典 🤔
  • keys 绝对 不许重复
    • values 有可能重复
  • 如果 没有重复的 values 的话
    • key 和 value 可以对调
      • 英汉字典 可以转化为 汉英字典
      • 汉英字典 也可以转化为 英汉字典
  • 英语 成为世界第一语言
    • 一位词典修订者 做出了 重大贡献
    • 他也被叫做字典人(dictionary man)

图片描述

  • 字典人 究竟是 怎么样的人 呢?
    • 他 对英语 成为世界语言
    • 做出了 哪些贡献?🤔
  • 下次再说 👋

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