【问题标题】:Using .copy() to create a copy of a dictionary that can be editing without altering the original dictionary使用 .copy() 创建可以在不更改原始字典的情况下进行编辑的字典副本
【发布时间】:2020-05-12 21:41:14
【问题描述】:

这是一个非常基本的例子:

dict1 = dict({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})

dict2 = dict1.copy()

dict2['a'] = [9,9,9]

print(dict1['a'])

结果:[1,2,3]

结果显示我能够在不更改原件的情况下编辑副本。

但如果我改为这样做:

dict1 = dict({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})

dict2 = dict1.copy()

dict2['a'][0] = 9

print(dict1['a'])

结果:[9,2,3]

所以看起来使用 .copy() 使得复制的 dict 具有来自原始 dict 的独立键,但与这些键关联的值仍然是连接的。有解决方法吗?谢谢!

【问题讨论】:

标签: python list dictionary copy


【解决方案1】:

您想要创建 dict 的深层副本,否则 dict 中引用的对象将在原始副本和浅层副本之间共享(因此在您的第二个示例中更改元素不会按您的意愿工作):

import copy

dict1 = dict({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})

dict2 = copy.deepcopy(dict1)

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 2021-10-28
    • 2020-11-03
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多