python中如何将多个字典Dict对象快速合并?

python中如何将多个字典Dict对象快速合并?

喜欢这个问题 | 分享 | 新建回答

回答

喷火的尾巴

Jul 10, 2020
0 赞

python中将多个字典对象(Dict类型)合并成一个字典是有专门的一套写法,不过python2和python3实现多个字典对象合并的方法并不一样。

Python2中将多个字典Dict对象快速合并的方法如下例所示,先用字典对象的copy方法,再用字典对象的update方法,copy方法是把该字典对象的值作为结果返回,update方法是在该字典对象的基础上融合、合并一个新的字典。所以本质上你想要找的就是update这个方法,示例如下:

a = { 'a': 1, 'c': 2 }
b = { 'k': 1, 'd': 3 }
c = { 'j': 2, 's': 0 }

def combine_dicts( d1, d2, d3 ):
    new_dict = d1.copy()
    new_dict.update( d2 )
    new_dict.update( d3 )
    return new_dict

res = combine_dicts( a, b, c )
print res

# 结果是 {'a': 1, 'c': 2, 'd': 3, 'k': 1, 'j': 2, 's': 0}

运行一下



Python3中实现多个字典对象合并只要用如下语法即可(大于3.5版本的python3才可以):

a = { 'a': 1, 'c': 2 }
b = { 'k': 1, 'd': 3 }
c = { 'j': 2, 's': 0 }
res = { **a, **b, **c }
print(res)



此外还有一种思路实现python中多个字典对象(Dict)合并;那就是利用字典对象的items方法和dict函数,items方法可以把字典对象变成由键值形成的元组(tuple)所构成的列表对象(list),先把所有的字典对象都转换成这样的列表,再由这样的列表对象进行列表相加,最后利用dict函数把相加出的列表结果转换回字典对象。示例如下:

a = { 'a': 1, 'c': 2 }
b = { 'k': 1, 'd': 3 }
c = { 'j': 2, 's': 0 }
res = dict( a.items() + b.items() + c.items() )

运行一下



假如合并的多个字典对象中有重复的键(key)但不同的值(value),则以合并顺序为覆盖依据,以最后进行合并入的字典中的键(key)所对应的值(value)为标准,示例如下,a字典中的字符a对应的是1,b字典中的字符a对应的是2,最后合并的结果中a则会是2,因为a->2把a->1覆盖了。

a = { 'a': 1, 'c': 2 }
b = { 'k': 1, 'd': 3 }
c = { 'a': 2, 's': 0 }

def combine_dicts( d1, d2, d3 ):
    new_dict = d1.copy()
    new_dict.update( d2 )
    new_dict.update( d3 )
    return new_dict
res = combine_dicts( a, b, c )

print res

# 结果是 {'a': 2, 'c': 2, 'd': 3, 'k': 1, 's': 0}

运行一下