《Python Cookbook 3rd》笔记(1.9):查找两字典的相同点
查找两字典的相同点
问题
怎样在两个字典中寻寻找相同点 (比如相同的键、相同的值等等)?
解法
考虑下面两个字典:
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):查找两字典的相同点相关推荐
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- 《Python cookbook》笔记一
<Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...
- python基础学习笔记9:元组、字典、集合
元组的定义与使用 1.为什么需要元组 思考 如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改. num_list = [10 ...
最新文章
- jboss5 启动时报HsqlException:length must be specified in type definition:VARBINARY错误
- 基于 APIGateway 打造生产级别的 Knative 服务
- 库存管理-历史库存和收发存系列-MB5B
- PHP实习之路—NO.1(看LINUX、APACHE、MYSQL、PHP文档)
- Django讲课笔记08:定义商城的数据模型
- net core 小坑杂记之配置文件读取(不定期更新)
- appscan如何进行web端安全性测试_如何进行WEB安全性测试?
- 一键查看MTALAB支持的字体
- Java中级软件工程师应该具备的知识点
- php文件如何转换成mp4,qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式...
- Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等
- 手机打车APP的机遇与挑战
- excel 按照范围替换
- 洛谷4550 收集邮票(期望DP)
- 作为通信人,我们究竟该如何看待AI?
- 第三章 Python容器:列表、元组、字典与集合
- App Store上架之开发者账号申请
- 平行四边形的面积公式是如何推导的?
- kaggle api下载数据集
- API卡_[api]必应词典查询api,naive implementation
热门文章
- WinCE中命令行工具Viewbin简介
- android 有值代码,Android:如何在代码中获取“listPreferredItemHeight”属性的值?
- 慕课乐学python单元测试答案_中国大学慕课第三章单元测试答案_乐学软件工程免费答案...
- java enum in class_Java 8需要一个转换,而Java 7没有 – enum.getClass/getDeclaringClass
- html多出的空白页怎么删除,word多出一页空白页怎么删除,这4个方法总有一个能解决,真实挂机网赚项目...
- arcgis批量裁剪矢量模型
- 【转】Linux命令行下svn ignore忽略文件或文件夹用法
- 【转】Dicom基础知识
- 由浅到深理解ROS(8)-线程管理
- java 引用被回收_java GC 静态List 如果没有引用会被回收吗