python3-cookbook-查找两字典的相同点

第一章:数据结构和算法

Python 提供了大量的内置数据结构,包括列表,集合以及字典。大多数情况下使用这些数据结构是很简单的。但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题。 因此,这一章的目的就是讨论这些比较常见的问题和算法。 另外,我们也会给出在集合模块 collections 当中操作这些数据结构的方法。

参考:
https://python3-cookbook.readthedocs.io/zh-cn/latest/index.html
https://github.com/dabeaz/python-cookbook/tree/master

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,然后再执行集合运算就行了。

相关推荐

  1. python3-cookbook-查找字典相同

    2024-01-31 01:14:01       40 阅读
  2. Python3-Cookbook(第九章) - 元编程Part3

    2024-01-31 01:14:01       11 阅读
  3. Python3】计算个字符串相似

    2024-01-31 01:14:01       39 阅读
  4. Python Cookbook》第一章

    2024-01-31 01:14:01       12 阅读
  5. python3 csv解析单引号包含特殊字符字段

    2024-01-31 01:14:01       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 01:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 01:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 01:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 01:14:01       20 阅读

热门阅读

  1. 738. 单调递增的数字 - 力扣(LeetCode)

    2024-01-31 01:14:01       29 阅读
  2. 达梦 hibernate连接主备集群

    2024-01-31 01:14:01       36 阅读
  3. 蓝桥杯练习-dfs算法飞机降落问题

    2024-01-31 01:14:01       35 阅读
  4. 「优选算法刷题」:只出现一次的数字Ⅲ

    2024-01-31 01:14:01       35 阅读
  5. 面试经典 150 题 -- 数组 / 字符串 (总结)

    2024-01-31 01:14:01       28 阅读
  6. Unity数据解析(Json、XML、CSV、二进制)

    2024-01-31 01:14:01       34 阅读
  7. NTP时间同步服务器@客户端时钟同步设置

    2024-01-31 01:14:01       30 阅读
  8. Redis面试题35

    2024-01-31 01:14:01       40 阅读