【问题标题】:Unwanted Dictionary Update When Adding Multiple Dictionaries to a List将多个字典添加到列表时不需要的字典更新
【发布时间】:2018-07-07 15:15:35
【问题描述】:

在 Python 中,我正在尝试创建一个包含 2 个独立字典(dict1dict2)的列表。但是,当我使用 append 和 update 方法将它们都添加到新列表时,它似乎改变了我的 dict1 字典。

n = []
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4, "e": 5}

n.append(dict1)
n[0].update(dict2)

这给了我想要的n 的结果,但它也覆盖了我的dict1,这是不想要的。

dict1 
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

为什么会这样?如何在不修改我的第一个字典的情况下实现将 2 个字典加入列表的目标?这段代码的目的是将 2 个 JSON 文档合二为一,以防有人想知道。

【问题讨论】:

  • 那是因为dict1n[0] 指的是同一个字典。如果您想要副本,请使用副本:n.append(dict1.copy())

标签: python list dictionary append updates


【解决方案1】:

如 cmets 中所述,当您执行 .update() 时,您引用的是同一个字典。因此,您可以使用.copy() 进行显式复制并获取可以更新的初始字典。

n.append(dict1.copy())
n[0].update(dict2)

或者,如果您有两个字典,您可以在一行中完成,例如:

n.append(dict(dict1, **dict2))

或者你可以明确地从一个空字典开始,然后像这样更新::

n.append({})
n[0].update(dict1)
n[0].update(dict2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2023-03-31
    相关资源
    最近更新 更多