Python 3.x 为什么值赋值嵌套循环会赋值超过预期时间?
我有一本嵌套字典。原始字典有i个键,每个i个键将j个其他键映射到一个列表。 我想给每个列表附加一个值。因为我知道字典的键,所以我在Python 3.x 为什么值赋值嵌套循环会赋值超过预期时间?,python-3.x,nested-loops,Python 3.x,Nested Loops,我有一本嵌套字典。原始字典有i个键,每个i个键将j个其他键映射到一个列表。 我想给每个列表附加一个值。因为我知道字典的键,所以我在循环中迭代(I)x for(j)的键,并期望I*j赋值。但是我得到了I*I*j分配。我的错在哪里 我还尝试使用dic.items()中I,j的标准对字典进行迭代,但我再次得到了比预期更多的作业 # creating empty dictionary dic_2 = {} for i in range (10): dic_2[i] = [] dic = {}
循环中迭代(I)x for(j)
的键,并期望I*j
赋值。但是我得到了I*I*j
分配。我的错在哪里
我还尝试使用dic.items()中I,j的标准对字典进行迭代,但我再次得到了比预期更多的作业
# 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()
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)}}
此代码是否适合您的要求
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)}}
您将相同的内部字典分配给外部字典的每个条目,因此您将在相同的10个列表上循环,并每10次迭代返回相同的列表。它从1开始,因为您在分配第一个条目之前递增计数器。您可以共享您的全部预期输出吗!谢谢@lehiester,但是我的主要问题是,如果变量计数器(第17行:counter+=1
)的增量总共发生100次,为什么追加过程(第18行:dic[i][j]。追加(counter)
)会发生1000次。@Davesh,那就是那天:))您将相同的内部字典分配给外部字典的每个条目,因此您将在相同的10个列表上循环,并每10次迭代返回相同的列表。它从1开始,因为您在分配第一个条目之前递增计数器。您可以共享您的全部预期输出吗!谢谢@lehiester,不过我的主要问题是,如果变量计数器(第17行:counter+=1
)的增量总共发生100次,为什么追加过程(第18行:dic[i][j]。追加(counter)
)会发生1000次。@Davesh,那就是那天:)谢谢,但我的问题是,如果变量计数器(第17行:计数器+=1)的增量总共发生100次,为什么追加过程(第18行:dic[i][j].append(计数器))会发生1000次。谢谢,但我的问题是,如果变量计数器(第17行:计数器+=1)的增量总共发生100次,为什么追加过程会发生(第18行:dic[i][j].append(counter))发生1000次。我仍然不知道如何和为什么,但它是这样工作的!谢谢!我仍然不知道如何和为什么,但它是这样工作的!谢谢!