为什么一个值赋值嵌套循环,赋值次数超过预期?
Why does a value assignment nested loop, assign more than expected times?
我有一个嵌套字典。原始字典有 i 个键,这 i 个键中的每一个都将 j 个其他键映射到一个列表。
我想为每个列表附加一个值。因为我知道字典的键,所以我在 for(i) x for(j)
循环中迭代键,并期望 i*j
赋值。但我得到了 i*i*j
作业。我的错误在哪里?
我也尝试使用标准 for i,j in dic.items()
遍历字典,但我得到的作业再次超出预期。
# creating empty dictionary
dic_2 = {}
for i in range (10):
dic_2[i] = []
dic = {}
for i in range (10):
dic[i] = dic_2
# =========================================
# appending values
counter = 0
for i in range (10):
# print("counter = ", counter,'_________', "i = ", i)
for j in range (10):
# print("__", "counter = ", counter,"j = ", j)
counter += 1
dic[i][j].append(counter)
dic
我预计
dic[0][0] = [0]
但我得到
dic[0][0] = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
dic
的每个条目都是对同一词典 dic_2
的引用。要为每个 i,j
获取单独的列表,您需要在嵌套循环中创建列表,因为当前代码为每个 i
.
使用相同的 10 个列表
for i in range(10):
dic[i] = dict()
for j in range(10):
dic[i][j] = list()
这段代码是否符合您的要求。
K = 10 # your range
dic = {j:{i:[(K*j)+i] for i in range(K)} for j in {i:[i] for i in range(K)}}
我有一个嵌套字典。原始字典有 i 个键,这 i 个键中的每一个都将 j 个其他键映射到一个列表。
我想为每个列表附加一个值。因为我知道字典的键,所以我在 for(i) x for(j)
循环中迭代键,并期望 i*j
赋值。但我得到了 i*i*j
作业。我的错误在哪里?
我也尝试使用标准 for i,j in dic.items()
遍历字典,但我得到的作业再次超出预期。
# creating empty dictionary
dic_2 = {}
for i in range (10):
dic_2[i] = []
dic = {}
for i in range (10):
dic[i] = dic_2
# =========================================
# appending values
counter = 0
for i in range (10):
# print("counter = ", counter,'_________', "i = ", i)
for j in range (10):
# print("__", "counter = ", counter,"j = ", j)
counter += 1
dic[i][j].append(counter)
dic
我预计
dic[0][0] = [0]
但我得到
dic[0][0] = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91]
dic
的每个条目都是对同一词典 dic_2
的引用。要为每个 i,j
获取单独的列表,您需要在嵌套循环中创建列表,因为当前代码为每个 i
.
for i in range(10):
dic[i] = dict()
for j in range(10):
dic[i][j] = list()
这段代码是否符合您的要求。
K = 10 # your range
dic = {j:{i:[(K*j)+i] for i in range(K)} for j in {i:[i] for i in range(K)}}