Python 嵌套for循环中字典值的字典
我有下面的代码,我想创建一个字典来存储其他字典之间的差异Python 嵌套for循环中字典值的字典,python,loops,dictionary,for-loop,Python,Loops,Dictionary,For Loop,我有下面的代码,我想创建一个字典来存储其他字典之间的差异 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次的相同值 对不起,
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].].]您可以动态创建新词典,以使用词典理解更有效地存储其他词典的差异
a = {'a':1, 'b':2, 'c':3}
b = {'a':1, 'b':0, 'c':5}
diff = {x:a[x] - b[x] for x in a}
你的问题是什么?你能给出一个更有用的名字吗?你希望它们包含什么?你只是在做一个参考副本,所以看看你得到的结果是有意义的。如果您只想在该迭代中存储这些列表的值,那么您需要使用
x[j]=y.copy()
创建一个浅拷贝,也许您需要allz[j]=dvarz.copy()
和allrx[j]=dvarrx.copy()
?