等于更新的字典的变量不起作用,为什么?

问题描述

想象我有

dict1 = {'uno':[1,2,3],'dos':[4,5,6]}

dictA = {'AA':'ZZZZZ'}

这有效:

dict1.update(dictA)

结果:{'uno': [1,'dos': [4,6],'AA':'ZZZZZ'}

但这不起作用:

B = dict1.update(dictA)

结果不是错误,但结果为None,这会使该行为(IMMO)变得奇怪而危险,因为代码不会崩溃。

那为什么不返回None并且不给出错误

注意: 看起来要走的路是:

C = dict1.update(dictA)
B = {}
B.update(dict1)
B.update(dictA)
B

C不存在 B可以啦

解决方法

使用update时,它将更新dict1作为参数的字典并返回None

Docs

dict。更新([映射]) 映射 需要。另一个字典对象或key:value对>(长度为2的iterables)的可迭代对象。如果指定了关键字参数,则字典>>然后使用这些key:value对进行更新。 返回值 没有

代码:

dict1 = {'uno':[1,2,3],'dos':[4,5,6]}

dict1.update({'tres':[7,8,9]})

# {'uno': [1,'dos': [4,6],'tres': [7,9]}
print(dict1)