迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何在 Python 中获取字典交集

作者:迹忆客 最近更新:2023/04/24 浏览次数:

本文将讨论在 Python 中对两个或多个字典执行交集的不同方法。


Python字典

数据使用 Python 字典以键值对格式保存,它是一种可变数据结构。 Python 的字典数据类型可以模仿真实世界的数据排列,其中给定键存在特定值。

键和值是用于定义字典的元素:

  • 键应该是单个元素。
  • 值可以是任何类型,例如列表、整数、元组等。

换句话说,字典是一组键值对,其中值可以是任何 Python 对象。 相反,键是不可变的 Python 对象,例如字符串、元组或数字。

多个键值对可用于构建字典,在每对包含在大括号中之前,用冒号将每个键与其值分开。

语法如下:

dict = {'Name': 'John', 'Age': 18, 'Grade': '13'}

让我们看一个例子:

Python Dictionary Example


在 Python 中使用字典推导来交叉两个字典

我们可以使用不同的方法通过 Python 中的键来执行字典的交集。

  • 首先,将原始字典初始化为 dict01 和 dict02。
  • 打印原始词典。
  • 接下来假设 dict01 的 key 为 k1,执行 for 循环检查 dict01 中的 k1 是否存在于 dict02 中。 如果它确实有公共键,它的值将被推送到一个名为 intersection 的新字典中(字典可以根据要求优先选择)。
  • 打印具有公共键及其值的新字典交集。

例子:

# 初始化字典
dict01 = {'A': 1, 'B': 6, 'C': 3, 'D': 5}
dict02 = {'A': 1, 'C': 4, 'D': 5, 'E': 2}

# 打印原始词典
print ("First original dictionary: ", dict01)
print ("Second original dictionary: ", dict02)

# 执行 交集
intersection = {k1:dict01[k1] for k1 in dict01
          if k1 in dict02}

# 打印结果
print ("Intersected Dictionary: ", str(intersection))

如果运行上面的代码,我们将收到下面列出的输出。

Python 字典交集使用字典理解 1

将 dict02 的键视为 k2。 按照相同的代码执行for循环,检查dict02中的k2是否也存在于dict01中。

此外,如果值是字符串类型:

# 初始化字典
dict01 = {1:'My', 2:'I', 3:'age'}
dict02 = {1:'name', 2:'live', 4:'year'}

# 定义一个函数来合并字符串
def mergeStrings(str01,str02):
    return str01+ ' '+ str02

# 执行 交集
intersectString = {k1:mergeStrings(dict01[k1],dict02[k1]) for k1 in dict01.keys() if k1 in dict02}

# 打印结果
print(intersectString)

让我们看看上面代码的结果:

Python 字典交集使用字典理解 2


使用按位 & 运算符在 Python 中对两个字典进行交集

它只是从字典中过滤公共键和键的对应值。 它只过滤具有相同值的键,这种方法更容易理解和应用。

  • 首先,将 dict01 和 dict02 初始设置为原始词典。
  • 接下来打印原始词典。
  • 接下来,使用 items() 函数将字典 dict01 和 dict02 转换为列表格式。
  • 然后,使用 & 运算符执行 AND。 然后使用 dict() 函数将公共键值对转换为字典,并存储在新的字典交集中。
  • 最后,打印新字典。

例子:

# 初始化字典
dict01 =  {'A': 1, 'B': 6, 'C': 3, 'D': 5}
dict02 =  {'A': 1, 'C': 4, 'D': 5, 'E': 2}

# 打印原始词典
print ("First original dictionary: ", dict01)
print ("Second original dictionary: ", dict02)

# 执行 交集
intersection = dict(dict01.items() & dict02.items())

# 打印结果
print ("Intersected Dictionary", str(intersection))

如果运行上述代码,您将收到以下结果。

使用按位 & 运算符的 Python 字典交集

在对 Python 字典交集执行按位 & 运算符时,各个键的键和值也应该相等。


使用 Set intersection() 方法在 Python 中将两个字典相交

set intersection() 方法返回一个集合,该集合由集合 m 和 n 中存在的元素组成,如下所示:

m = {'A': 1, 'B': 6, 'C': 3, 'D': 5}
n = {'A': 1, 'D': 5, 'E': 2}

setM = set( m )
setN = set( n )

setM.intersection( setN )

for item in setM.intersection(setN):
    print(item)

如果运行上面的示例代码,我们将得到以下结果。

Python 字典交集使用 intersection()


在 Python 中用于交叉多个字典的方法

我们可以同时使用按位 & 运算符和 Set intersection() 方法,通过进一步编码轻松找到多个字典中相交的元素。

使用按位 & 运算符:

# 初始化字典
dict01 =  {'A': 1, 'B': 6, 'C': 3, 'D': 5}
dict02 =  {'A': 1, 'C': 4, 'D': 5, 'E': 2}
dict03 =  {'A': 1, 'C': 9, 'D': 5, 'E': 1}

# 打印原始词典
print ("First original dictionary: ", dict01)
print ("Second original dictionary: ", dict02)
print ("Third original dictionary: ", dict03)

# 执行 交集
intersection = dict(dict01.items() & dict02.items() & dict03.items())

# 打印结果
print ("Intersected Dictionary", str(intersection))

让我们看看上面代码执行后的结果:

Python 多字典交集使用 &

使用 Set intersection() 方法:

m = {'A': 1, 'B': 6,'D': 5, 'E': 2}
n = {'A': 1, 'D': 5, 'E': 2}
t = {'A': 1,'C': 4, 'D': 5, 'E': 2}

setM = set( m )
setN = set( n )
setT = set( t )

setM.intersection( setN ).intersection( setT)

for item in setM.intersection( setN ).intersection( setT):
    print(item)

我们来看看上面代码执行后的结果:

Python 多字典交集使用 intersection()

总结

最后,我们考虑了在 Python 中对两个或多个字典执行交集以创建一个新字典的快速有效的方法。 您可以根据自己的偏好和用例选择所需的任何方法。

我们发现了两个或多个字典的交集,它们都在键和键值对的级别上,有时对共同的键使用不同的功能。 这些方法当然不是唯一的; 你可以想到更多,也许在以后的 Python 版本中会添加针对这些任务的更明确的方法。

尽管几乎所有建议的代码都是一行代码,但它们都清晰而优雅。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便