当前位置:
首页
文章
后端
详情

python字典合并——来自python3.9的新方法!

在python中,字典是一个很有特色的数据结构。在实际开发过程中字典的运用相当广泛。但是,有些字典操作并不是那么好用,比如在字典中有一种业务运用得比较多的操作,就是字典合并,今天我们就来介绍常用的字典合并的三种方法和python3.9新增的一种字典合并方法吧!

 for 循环的方式

比较经典的合并字典的方式是使用 for 循环:

>>> a = {1: '编程狮', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> for k, v in b.items():
...     a[k] = v
...
>>> a
{1: '编程狮', 2: 'W3Cschool', 3: 'python', 4: 'java'}

这种方法每次合并都要调用一次循环,效率是比较低下的。

dict(a, **b) 的方式

大家都知道我们可以使用 **dict 的方式打开一个字典类型的数据, 我们可以使用 dict 方法并借助这种方式实现两个字典的合并:

>>> a = {1: '编程狮', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> dict(a, **b)
{1: '编程狮', 2: 'W3Cschool', 3: 'python', 4: 'java'}

【注意】此时, 会返回一个新的字典。

这种使用占位符的方式对于已经熟练掌握python编程的小伙伴来说是比较简单的,但是对于刚开始学习编程的小伙伴来说,这并不简洁易懂。

dict.update(other_dict) 的方式

直接调用字典的 update() 方法, 同样可以将两个字典合并:

>>> a = {1: '编程狮', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a.update(b)
>>> a
{1: '编程狮', 2: 'W3Cschool', 3: 'python', 4: 'java'}

【注意】此时同样实现了两个字典的合并, 但是需要注意的是 a.update(b) 的方式并没有返回一个新的字典, 而是将字典 a 进行了 “更新”, 此时的返回值是 None。

这种方法虽然好用也易于理解,但实际上,还有更易于理解的方法:字典的合并可以理解为是字典的相加,在python3.9中新增了(新增内置)|和|=两种操作符,现在我们可以这样干:

python3.9新增的操作符的方式:

在python3.9中,可以直接使用|或|=这两种操作符,前者可以用来合并两个字典(合并到右边的字典内)

>>> a = {1: '编程狮', 2: 'W3Cschool'}
>>> b = {3: 'python', 4: 'java'}
>>> a|b
{1: '编程狮', 2: 'W3Cschool', 3: 'python', 4: 'java'}

当字典中有相同的键的适合,会从左到右取最后出现的值。

|=的运算类似于+=,这个时候就会将字典合并到左边的字典内。

值得一提的是,|=不仅仅可以用于合并字典,也可以用于合并字典和别的类型的数据(比如列表)。例如

>>> a = {1: '编程狮', 2: 'W3Cschool'}
>>> a |= [('python','java')]
>>> a
{1: '编程狮', 2: 'W3Cschool', 'python': 'java'}


免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型