【问题标题】:variable equal to an updated dict does not work, why? [duplicate]等于更新的字典的变量不起作用,为什么? [复制]
【发布时间】:2020-12-26 17:46:16
【问题描述】:

想象一下我有

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

dictA = {'AA':'ZZZZZ'}

这行得通:

dict1.update(dictA)

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

但这不起作用:

B = dict1.update(dictA)

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

那么为什么返回 None 而没有报错呢?

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

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

C 没有 B在这里没问题

【问题讨论】:

  • update 函数更新当前的dict 并返回None,因此存储在B 中的值将为None。
  • 这并不奇怪,它会就地更新字典。因此返回None
  • 谢谢,检查其他相关问题我找不到返回无的原因。我的意思是一个用例左右。也许这是一个哲学问题。它记录在案,我们知道绕过它的方法,但问题是为什么会这样?

标签: python dictionary updates


【解决方案1】:

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

Docs:

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

代码:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多