【编程】Python 合并字典

Python字典的主要操作是存储键值和索引键值。有一些方法可以合并字典,但没有内置的合并字典的函数,只能用变通的方法。,有些需要几行代码,有些只需要一行的表达式。

使用双星号操作符 (**)

PEP 448 扩展了双星号的能力,可以用来复制键值对。借用字典推导和压缩操作符,可以用简单的表达式合并字典。

  • Python 3.5 或更高

>>>dict1 = {1:’one’ , 2:’two’}
>>>dict2 = {3:’three’, 4:’four’}
>>>fDict = {**dict1 , **dict2}
>>>print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

使用加 (+) 操作符

如果是 Python 2.7 , 可以使用加 (+) 号完成一行表达式合并字典。

  • Python 2.7

使用 ChainMap

ChainMap方法是Python标准库提供的,可以用以出来多个字典。

  • Python 3.0 或更高

>>> from collections import ChainMap
>>> dict1 = {1:’one’ , 2:’two’}
>>> dict2 = {3:’three’, 4:’four’}
>>> fDict = dict(ChainMap({}, dict2, dict1))
>>> print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

使用Update() 方法

update() 方法用一个字典的键值对更新另一个字典的键值对,如果键不在目标字典中存在,则会被添加到目标字典中,如果存在,则会更新这个键值。

  • Python 2, (或3.4 或 更低)

使用| 操作符

  • Python 3.9 或更高

Python 3.9版可以使用 | 来更新或合并字典。

>>> dict1 = {1:’one’ , 2:’two’}
>>> dict2 = {3:’three’, 4:’four’}
>>> fDict = dict1 | dict2
>>> print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

合并多个字典

合并更多的字典:

>>> dict1 = {1:’one’ , 2:’two’}
>>> dict2 = {3:’three’, 4:’four’}
>>> dict3 = {5:’five’, 6:’six’}
>>> fDict = {}
>>> fDict.update(dict1)
>>> fDict.update(dict2)
>>> fDict.update(dict3)
>>> print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, 6: ‘six’}

使用推导

推导可以非常简短清晰的用来从一个给定的序列构造新的序列,用推导合并两个字典。

>>> dict1 = {1:’one’ , 2:’two’}
>>> dict2 = {3:’three’, 4:’four’}
>>> fDict={i:items[i] for items in [dict1,dict2] for i in items}
>>> print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

使用Lambda 函数合并字典

lambda 函数可以有任意个参数,但只能有一个表达式。可以使用lambda函数合并两个字典。

>>> dict1 = {1:’one’ , 2:’two’}
>>> dict2 = {3:’three’, 4:’four’}
>>> fDict = (lambda f=dict1.copy(): (f.update(dict2), f)[1])()
>>> print(fDict)
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

合并多个字典

Python 的 itertools 模块标准化了递归建立块的一个核心集合,速度快,并且内存有效率。itertools.chain 返回一个链对象,它的 .next() 方法遍历返回每个元素,合并多个字典的方法如下:

import itertools 
def union1(*dicts):
return dict(itertools.chain.from_iterable(dct.items() for dct in dicts))
dict1 = {1:'one' , 2:'two'}
dict2 = {3:'three', 4:'four'}
dict3 = {5:'five', 6:'six'}
dict4 = {7:'seven', 8:'eight'}
fDict = union1(dict1,dict2,dict3,dict4)
print(fDict)

输出

{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, 6: ‘six’, 7: ‘seven’, 8: ‘eight’}



【编程】Python 列表推导
【编程】Python 列表排序
【编程】Python 集合
【编程】Python字典
【编程】Python 元组
【编程】Python 列表 List
【编程】Python with 语句
【游戏】益智数独挑战脑力
【编程】Python 函数

此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。