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

2021-09-06 10:45:46 浏览数 (4)

在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'}


0 人点赞