查找两字典的相同点

问题

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

解法

考虑下面两个字典:

a = {'x' : 1,'y' : 2,'z' : 3
}b = {'w' : 10,'x' : 11,'y' : 2
}

为了寻找两个字典的相同点,可以简单的在两字典的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) }

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

# 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}

讨论

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

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

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

《Python Cookbook 3rd》笔记(1.9):查找两字典的相同点相关推荐

  1. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  2. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  3. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  4. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  5. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  6. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  7. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  8. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

  9. python基础学习笔记9:元组、字典、集合

    元组的定义与使用 1.为什么需要元组 思考 如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. num_list = [10 ...

最新文章

  1. jboss5 启动时报HsqlException:length must be specified in type definition:VARBINARY错误
  2. 基于 APIGateway 打造生产级别的 Knative 服务
  3. 库存管理-历史库存和收发存系列-MB5B
  4. PHP实习之路—NO.1(看LINUX、APACHE、MYSQL、PHP文档)
  5. Django讲课笔记08:定义商城的数据模型
  6. net core 小坑杂记之配置文件读取(不定期更新)
  7. appscan如何进行web端安全性测试_如何进行WEB安全性测试?
  8. 一键查看MTALAB支持的字体
  9. Java中级软件工程师应该具备的知识点
  10. php文件如何转换成mp4,qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式...
  11. Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等
  12. 手机打车APP的机遇与挑战
  13. excel 按照范围替换
  14. 洛谷4550 收集邮票(期望DP)
  15. 作为通信人,我们究竟该如何看待AI?
  16. 第三章 Python容器:列表、元组、字典与集合
  17. App Store上架之开发者账号申请
  18. 平行四边形的面积公式是如何推导的?
  19. kaggle api下载数据集
  20. API卡_[api]必应词典查询api,naive implementation

热门文章

  1. WinCE中命令行工具Viewbin简介
  2. android 有值代码,Android:如何在代码中获取“listPreferredItemHeight”属性的值?
  3. 慕课乐学python单元测试答案_中国大学慕课第三章单元测试答案_乐学软件工程免费答案...
  4. java enum in class_Java 8需要一个转换,而Java 7没有 – enum.getClass/getDeclaringClass
  5. html多出的空白页怎么删除,word多出一页空白页怎么删除,这4个方法总有一个能解决,真实挂机网赚项目...
  6. arcgis批量裁剪矢量模型
  7. 【转】Linux命令行下svn ignore忽略文件或文件夹用法
  8. 【转】Dicom基础知识
  9. 由浅到深理解ROS(8)-线程管理
  10. java 引用被回收_java GC 静态List 如果没有引用会被回收吗