在避免使用for循环的情况下,用一个字典扩展另一个字典的最佳方法是什么?例如:

>>> a = { "a" : 1, "b" : 2 }
>>> b = { "c" : 3, "d" : 4 }
>>> a
{'a': 1, 'b': 2}
>>> b
{'c': 3, 'd': 4}

结果:

{ "a" : 1, "b" : 2, "c" : 3, "d" : 4 }

喜欢的东西:

a.extend(b)  # This does not work

当前回答

注意,自Python 3.9以来引入了一个更简单的语法(联合操作符):

d1 = {'a': 1}
d2 = {'b': 2}

extended_dict = d1 | d2
>> {'a':1, 'b': 2}

注意:如果第一个字典与第二个字典共享键,位置很重要!

d1 = {'b': 1}
d2 = {'b': 2}
d1 | d2 
>> {'b': 2} 

相关的激励

其他回答

注意,自Python 3.9以来引入了一个更简单的语法(联合操作符):

d1 = {'a': 1}
d2 = {'b': 2}

extended_dict = d1 | d2
>> {'a':1, 'b': 2}

注意:如果第一个字典与第二个字典共享键,位置很重要!

d1 = {'b': 1}
d2 = {'b': 2}
d1 | d2 
>> {'b': 2} 

相关的激励

a.update(b)

最新的Python标准库文档

a.update(b)

将从b到a添加键和值,如果键已经有值,则覆盖。

你试过使用字典映射的字典理解吗?

a = {'a': 1, 'b': 2}
b = {'c': 3, 'd': 4}

c = {**a, **b}
# c = {"a": 1, "b": 2, "c": 3, "d": 4}

另一种方法是使用dict(iterable, **kwarg)

c = dict(a, **b)
# c = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

在Python 3.9中,您可以使用联合|操作符添加两个字典

# use the merging operator |
c = a | b
# c = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

就效率而言,与更新方法相比,使用解包操作似乎更快。

这是我做的一个测试的图片: