Weibw's World Weibw's World
首页
  • HTML
  • Python

    • Python基础知识
    • Python CookBook第三版
    • Flask
  • MySQL

    • MySQL基础知识
    • MySQL调优
    • MySQL面试题
算法
  • FineReport
  • Kettle
  • Git
  • 微信公众号文章
  • 优秀博客文章
  • 其他
收藏夹
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Weibw

一个没有梦想的咸鱼
首页
  • HTML
  • Python

    • Python基础知识
    • Python CookBook第三版
    • Flask
  • MySQL

    • MySQL基础知识
    • MySQL调优
    • MySQL面试题
算法
  • FineReport
  • Kettle
  • Git
  • 微信公众号文章
  • 优秀博客文章
  • 其他
收藏夹
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 《Flask》

  • 《Python Cookbook》第三版

    • 第一章:数据结构与算法

      • 解压序列赋值给多个变量
      • 解压可迭代对象赋值给多个变量
      • 保留最后 N 个元素
      • 查找最大或最小的 N 个元素
      • 实现一个优先级队列
      • 字典中的键映射多个值
      • 字典排序
      • 字典的运算
      • 查找两字典的相同点
        • 删除序列相同元素并保持顺序
        • 命名切片
        • 序列中出现次数最多的元素
        • 通过某个关键字排序一个字典列表
        • 排序不支持原生比较的对象
        • 通过某个字段将记录分组
        • 过滤序列元素
        • 从字典中提取子集
        • 映射名称到序列元素
        • 转换并同时计算数据
        • 合并多个字典或映射
      • 第二章:字符串和文本

      • 第三章:数字日期和时间

      • 第四章:迭代器与生成器

      • 第五章:文件与IO

      • 第六章:数据编码和处理

      • 第七章:函数

      • 第八章:类与对象

      • 第九章:元编程

      • 第十章:模块与包

      • 第十一章:网络与Web编程

      • 第十二章:并发编程

      • 第十三章:脚本编程与系统管理

      • 第十四章:测试、调试和异常

      • 第十五章:C语言扩展

    • Python基础

    • Python
    • 《Python Cookbook》第三版
    • 第一章:数据结构与算法
    weibw
    2021-12-19

    查找两字典的相同点

    # 问题

    怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)?

    # 解决方案

    考虑下面两个字典:

    a = {
    	'x' : 1,
    	'y' : 2,
    	'z' : 3
    }
    b = {
    	'w' : 10,
    	'x' : 11,
    	'y' : 2
    }
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    为了寻找两个字典的相同点,可以简单的在两字典的 keys() 或者 items() 方法返 回结果上执行集合操作。比如:

    # Find keys in common
    a.keys() & b.keys() # { 'x', 'y' }
    # Find keys in a that are not in b
    a.keys() - b.keys() # { 'z' }
    # Find (key,value) pairs in common
    a.items() & b.items() # { ('y', 2) }
    
    1
    2
    3
    4
    5
    6

    这些操作也可以用于修改或者过滤字典元素。比如,假如你想以现有字典构造一个 排除几个指定键的新字典。下面利用字典推导来实现这样的需求:

    # Make a new dictionary with certain keys removed
    c = {key:a[key] for key in a.keys() - {'z', 'w'}}
    # c is {'x': 1, 'y': 2}
    
    1
    2
    3

    # 讨论

    一个字典就是一个键集合与值集合的映射关系。字典的 keys() 方法返回一个展现 键集合的键视图对象。键视图的一个很少被了解的特性就是它们也支持集合操作,比如 集合并、交、差运算。所以,如果你想对集合的键执行一些普通的集合操作,可以直接 使用键视图对象而不用先将它们转换成一个 set。

    字典的 items() 方法返回一个包含 (键,值) 对的元素视图对象。这个对象同样也 支持集合操作,并且可以被用来查找两个字典有哪些相同的键值对。

    尽管字典的 values() 方法也是类似,但是它并不支持这里介绍的集合操作。某种 程度上是因为值视图不能保证所有的值互不相同,这样会导致某些集合操作会出现问 题。不过,如果你硬要在值上面执行这些集合操作的话,你可以先将值集合转换成 set, 然后再执行集合运算就行了。

    编辑 (opens new window)
    #Python
    上次更新: 2023/10/13, 17:39:25
    字典的运算
    删除序列相同元素并保持顺序

    ← 字典的运算 删除序列相同元素并保持顺序→

    最近更新
    01
    牛客网非技术快速入门SQL练习题
    03-08
    02
    其他日常SQL题
    03-07
    03
    用户与权限管理
    03-05
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 | Weibw | 辽ICP备18015889号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式