字典排序_快速生成_sorted
回忆
-
上次了解了 字典人 的一生
- 工业革命 和光荣革命
- 带来了众多的 新职业 和新术语
- 这些新单词 又对当时英国人的思维方式
-
产生了巨大的影响
-
- 这些新单词 又对当时英国人的思维方式
- 带来了众多的 新职业 和新术语
- 字典人 将其中的词语进行
-
归纳整理 统一
-
使得英语能够代表 新兴的生产力
-
使得 英语成为了 力学、电学、计算机科学的母语
-

图片描述
- 字典人 之后
-
字典 又会进行 怎样的演化呢 ?🤔
-
魔鬼词典
- 现代
-
对词语有了新的解释
-

图片描述
-
有了魔鬼辞典
具体条目
-
一个辞典 就是一套世界观
| 中文 | 英文 | 含义 |
|---|---|---|
| 朋友 | friend | 在落魄时随之消逝的一个名词 |
| 熟人 | acquaintance | 就是这么一类人,我们和他们熟到可以向他们借钱,但没有熟悉到可以借钱给他们 |
| 乞丐 | beggar | 一种依赖朋友们接济度日的人 |
| 律师 | lawyer | 一个对法律圈套极为娴熟的人 |
| 失业 | leisure | 空闲,混乱生活中的一段清静 |
| 懒惰 | laziness | 下等人无权享用的一种悠闲 |
| 道歉 | apologize | 为将来的再次冒犯打下伏笔 |
| 可恶的 | abominable | 别人意见的实质 |
| 习惯 | habit | 为自由而设的镣铐 |
| 忍耐 | longanimity | 在报复可行之前,对欺辱照单全收 |
| 勇敢 | daring | 男人处在安全中时表现得最显著的品德之一 |
| 年 | year | 包含了三百六十五次失望的时间段落 |
| 订婚 | affianced | 为获得一个母夜叉而戴上脚镯 |
| 刺猬 | hedgehog | 动物里面的仙人球 |
| 自由 | liberty | 人类所想象出来的最珍贵的资产之一 |
新时代的百科
- 众人编辑的百科
-
成为 互联网时代的 词典
-

图片描述
-
掌握词汇定义 其实就是 掌握叙事
ai时代
| 维度 | 传统百科(维基/百度/搜狗) | AI百科(Grokipedia/Baidu Wiki) |
|---|---|---|
| 内容生产 | 人类志愿者协作编辑 | AI自动生成+人类审核/建议 |
| 更新速度 | 小时/天级,依赖人工 | 分钟/实时级,自动抓取最新信息 |
| 规模扩张 | 慢,数十年积累 | 极快,数月达数百万条 |
| 中立性 | 受编辑立场影响 | 宣称AI中立、偏见过滤 |
| 交互方式 | 静态阅读 | 可对话AI、Ask AI、动态解释 |
| 成本 | 人力成本高 | 算力成本为主,边际成本低 |

图片描述
-
字典能排序吗?
直接遍历
d = {'b': 2, 'a': 1, 'c': 3}
- 想要 遍历 这个字典的
-
keys
-
values
-
items
-
# 对键进行排序
keys = sorted(d)
print(keys)
keys = sorted(d.keys())
print(keys)
# 对值进行排序
values = sorted(d.values())
print(values)
# 对键值对进行排序(按键排序)
items = sorted(d.items())
print(items)
-
都可以遍历

图片描述
-
可以使用lambda表达式吗?
回忆lambda
score = [
["oeasy", 89],
["o2z", 96],
["o3zz", 75]
]
- 对于 可迭代对象score
-
对score中的 每次迭代的x
-
按照数学成绩排序
-
按照len(x[1])排序
-
# 根据子列表的第1个元素进行排序
shuxue = sorted(score, key=lambda x: x[1])
print(shuxue)
-
排序结果

图片描述
-
如果 按人名长度 排序
修改key
-
修改排序的 原则key
key=lambda x: len(x[1])
-
完整代码
# 根据子列表的第1个元素进行排序
renming = sorted(score, key=lambda x: len(x[1]))
print(renming)
-
二维列表 可以排序

图片描述
- 将字典
-
转为 二维列表后
-
再排序
-
字典排序
# 对字典的值进行排序
jiage = {'apple': 30, 'orange': 20, 'banana': 50, 'grapes': 10}
lst = sorted(jiage)
print(lst) # 输出按值排序的键列表
- 默认字典 排序
-
按照key排序
-
字符串 序号ascii 排序
-
返回列表
-

图片描述
-
想要 按价格排序
交给ai
-
按价格排序
jiage = {'apple': 30, 'orange': 20, 'banana': 50, 'grapes': 10}
____
将这个字典,按照价格排序
-
问问ai

图片描述
- 通过 items 把 字典 转化成 二维列表
-
然后 再根据 lambda 对二维列表排序
-
代码
jiage.items()
- 对jiage字典
- 每次迭代 得到的x
-
用 x[1] 也就是 value 进行比较
-
得到 水果的价格
-
- 每次迭代 得到的x

图片描述
-
尝试排序
jiage = {'apple': 30, 'orange': 20, 'banana': 50, 'grapes': 10}
asc = sorted(jiage.items(), key=lambda x: x[1])
- 将 字典
-
转化为 二维列表
-
再排序
-

图片描述
-
输出 可以好看些 吗?
价格
- 对于items的排序结果 asc
-
是一个 元组的列表
-
for fruit, price in asc:
print(fruit, price, sep="->")
-
遍历 二维列表 就行

图片描述
武将字典
- 这个字典 里面有 字典
-
想要得到 武力排名列表
-
heroes = {
"刘备":{ "武力":60, "智力": 70 },
"关羽":{ "武力":98, "智力": 90 },
"张飞":{ "武力":99, "智力": 60 }
}
-
应该 怎么办 呢?
询问ai

图片描述
- items方法 可以完整保留 字典信息
-
作为 排序依据
-
转化
-
老方法
heroes.items()
lst = list(heroes.items())
- 先用 items方法 将字典
-
转化为 二维列表
-

图片描述
- 这不就又成
-
二维列表排序了吗?
-
排序
-
对 武力 排序
# 按照武力排序
wuli = sorted(lst, key=lambda x: x[1]['武力'], reverse=True)
for hero, stats in wuli:
print(hero, ":", stats)
-
效果

图片描述
-
想把 武力 列出来
查询
- stats是 当前英雄属性的 字典
-
可以用 stats["武力"]
-
索引到 具体数值
-
# 按照武力排序
wuli = sorted(lst, key=lambda x: x[1]['武力'], reverse=True)
for hero, stats in wuli:
print(hero, ":", stats['武力'])
-
效果

图片描述
智力
-
对智力排序
# 按照智力排序
zhili = sorted(lst, key=lambda x: x[1]['智力'], reverse=True)
for hero, stats in zhili:
print(hero, stats["智力"])
-
结果

图片描述
-
想看看 武力加智力
综合实力
zonghe = sorted(heroes.items(), key=lambda x: x[1]['智力']+x[1]['武力'], reverse=True)
for hero, stats in zonghe:
print(hero, ":", stats["武力"] + stats["智力"])
-
关键还是 lambda的写法

图片描述
-
现实中的问题

图片描述
武将排名
d = {"吕布": 1,"赵云": 2, "典韦": 3}
-
1吕2赵3典韦

图片描述
- 需要添加
-
4关5马6张飞
-
交给ai

图片描述
-
用字典 update字典
# 原始字典
d = {"吕布": 1, "赵云": 2, "典韦": 3}
# 要添加的新元素
d2 = {"关羽": 4, "马超": 5, "张飞": 6}
# 更新字典
d.update(d2)
# 输出更新后的字典
print(d)
-
想把key和value对调
再交给ai

图片描述
- 有点像
-
英汉 汉英
-
# 原始字典
d = {'吕布': 1, '赵云': 2, '典韦': 3, '关羽': 4, '马超': 5, '张飞': 6}
# 创建一个新的字典,将键和值对调
inverted_d = {}
for key, value in d.items():
inverted_d[value] = key
# 输出新的字典
print(inverted_d)
-
结果
{1: '吕布', 2: '赵云', 3: '典韦', 4: '关羽', 5: '马超', 6: '张飞'}
- 这和 最初的原始字典
-
谁好呢?
-
询问ai
-
一种是 用排名 查人名
-
另一种是 用人名 查排名

图片描述
- 就像 英译汉 、汉译英
-
关键看需求
-
字典和列表
d = {1: '吕布', 2: '赵云', 3: '典韦', 4: '关羽', 5: '马超', 6: '张飞'}
l = ['吕布', '赵云', '典韦', '关羽', '马超', '张飞']
-
对于 字典遍历
for i in range(len(d)):
print(d[i+1])
-
直接用数字索引

图片描述
列表遍历
for i in range(len(l)):
print(l[i])
-
对于 列表遍历

图片描述
-
字典 和 列表 有啥区别呢?
继续 问ai

图片描述
- 要 序号从1开始、编号固定、不打乱
-
用 字典
-
序号固定
-
序号想修改 就都得修改
-
- 只要 顺序存放、遍历、省内存
-
用 列表
-
插入 新列表项 后需要自动更新
-
- 没有谁 绝对更好
-
具体看场景
-
总结
- 这次 了解了 字典排序 0. 使用 items 转化为 二维列表
-
使用 sorted 进行排序
-
lambda 设置排序逻辑
-
reversed 控制 升序 或 降序
-
返回 排好序的 新二维列表
-

图片描述
- ai环境下
-
有什么有意思的字典 吗??🤔
-
-
下次再说!👋

1073

被折叠的 条评论
为什么被折叠?



