oeasy python 139 字典排序_快速生成_sorted

字典排序_快速生成_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}
  • 想要 遍历 这个字典的

    1. keys
    2. values
    3. 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(x1)排序

      根据子列表的第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
      • 用 x1 也就是 value 进行比较
      • 得到 水果的价格

图片描述

  • 尝试排序

    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 转化为 二维列表
    1. 使用 sorted 进行排序
    2. lambda 设置排序逻辑
    3. reversed 控制 升序 或 降序
    4. 返回 排好序的 新二维列表

图片描述

  • ai环境下
    • 有什么有意思的字典 吗??🤔
  • 下次再说!👋
  • 配套视频

本文由mdnice多平台发布

相关推荐
hhzz10 分钟前
【OpenCV 入门到精通 07】滤波、阈值与形态学:图像去噪与形状处理
人工智能·python·opencv·计算机视觉
步行cgn31 分钟前
Spring 注入 Properties 详解
java·python·spring
shirsl40 分钟前
算法 Day3-队列 / deque + 链表
数据结构·python·算法·链表
名字还没想好☜1 小时前
Python 的 __call__ 实战:让实例像函数一样被调用,做带状态计数器、缓存器与可配置策略
开发语言·后端·python·缓存·编程语言
cpolar技术支持1 小时前
AI Agent 跑半小时就忘目标?用检查点与任务账本做可恢复长任务,cpolar 分享只读时间线
python·sqlite·cpolar·ai agent·任务恢复
张小姐的猫1 小时前
【AI大模型接入SDK】 —— SQLite上手
linux·开发语言·c++·人工智能·python·log4j
529宝宝起名网1 小时前
用 Python 实现基于字源特征的名字文化评分算法:从六书部首到文化寓意的多维度评分模型
python
努力学习的代码小白1 小时前
mem0源码学习03
python
zzj_2626101 小时前
Python数组定义及操作
python