【发布时间】:2017-10-08 21:54:28
【问题描述】:
我有以下代码,我想在其中创建一个存储其他字典之间差异的字典。
for j in range(0,15):
for k in range(0,15):
dvarz[k] = vz[j] - vz[k]
dvarrx[k] = vrx[j] - vrx[k]
allz[j] = dvarz
allrx[j] = dvarrx
这使得allz 和allrx 成为dvarz 和dvarrx 的最后一个值。所以allz 和allrx 变成了相同的值,重复了 15 次。
很抱歉造成误解。这是一个更一般的情况,只有一个列表存在相同的问题。
a = [1, 2, 3]
b = [3, 4, 5]
c = {}
d = {}
for i in range(0,3):
for j in range(0,3):
c[j] = a[i] - b[j]
d[i] = c
在这种情况下,我希望 d 是 [[a[0] - b[0], a[0] - b[1]...], [a[1] - b[0].. .]...]
【问题讨论】:
-
您的问题是什么?你能给minimal reproducible example 一个更有用的名字吗?
-
您希望它们包含什么?你只是在做一个参考副本,所以看到你得到的结果是有意义的。如果您只想存储这些列表的值在该迭代中,您需要使用
x[j] = y.copy()制作一个浅拷贝 -
也许你想要
allz[j] = dvarz.copy()和allrx[j] = dvarrx.copy()?
标签: python loops dictionary for-loop