【发布时间】:2021-09-02 07:35:37
【问题描述】:
如果我这样定义字典:
d1 = {'a': [1, 2], 'b': [3, 4]}
d2 = d1
那么d2是对d1的引用,如果我修改d2,那么d1也会被修改:
d2['b'] = [5, 6]
print(d1) # {'a': [1, 2], 'b': [5, 6]}
如果我改为复制d1,则更改为d2 不会影响d1:
d1 = {'a': [1, 2], 'b': [3, 4]}
d2 = d1.copy()
d2['b'] = [5, 6]
print(d1) # {'a': [1, 2], 'b': [3, 4]}
问题
我可以让d2 部分作为参考(在a 中),部分作为d1 的副本(在b 中),以便我可以执行以下操作:
d1 = {'a': [1, 2], 'b': [3, 4]}
d2 = ???
d2['a'] = [5, 6]
d2['b'] = [7, 8]
print(d1) # {'a': [5, 6], 'b': [3, 4]}
【问题讨论】:
-
不是字面意思,不是。您需要将两个字典中的
a键的值作为对您粘贴在两个字典中的可变对象的引用,然后再进行变异。 -
否;
d2要么是d1的副本,要么不是。没有中间地带。 -
另外,更准确的说法是
d1和d2都是同一个dict的引用;d1是“真实”引用,d2是“新”引用或对 named1的引用,这并没有真正的意义。 -
@user175348 你需要手动处理。 Python 没有为您提供管理它的方法。在字典之外创建对象,然后手动将其添加到两者中。
-
@user175348
mut = [3, 4]; d1['a'] = mut; d2['a'] = mut; mut[0] = 5; mut[1] = 6;
标签: python dictionary reference