【问题标题】:Dictionary of dictionary values in a nested for loop嵌套 for 循环中的字典值字典
【发布时间】: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

这使得allzallrx 成为dvarzdvarrx 的最后一个值。所以allzallrx 变成了相同的值,重复了 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


【解决方案1】:

您可以动态创建新词典,以使用词典理解更有效地存储其他词典的差异

a = {'a':1, 'b':2, 'c':3}

b = {'a':1, 'b':0, 'c':5}

diff = {x:a[x] - b[x] for x in a}

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2019-07-16
    • 2017-07-22
    • 2022-06-15
    相关资源
    最近更新 更多