在Python中,我尝试使用动态变量名创建动态列表。
variable = dict()
x = 0
while (x < 10):
for i in range(0, 10):
variable[i] = i + 3 # just an example code
print (i)
x = x + 1
我需要的是每个x的每个变量[i]的列表。但是当我创建这个变量[i]时,我不能再次使用另一个值......
答案 0 :(得分:2)
字典中的键必须是唯一的。
在第一个for循环之后,你有一个以1 ... 10作为键的字典。 当你进行第二次循环时,你只需覆盖之前的值。
相反,您可以聚合结果,当我说聚合时,我的意思是如果存在,您将对现有密钥的值求和。
如果密钥不存在,则variable.get(i, 0)
的结果为0。
variable = dict()
x = 0
while (x < 10):
for i in range(0, 10):
variable[i] = variable.get(i, 0) + i + 3 # just an example code
x = x + 1
答案 1 :(得分:1)
忽略代码示例中似乎不属于实际问题的部分,您可以使用&#34;追加&#34;
将列表项添加到列表中variable = [] # create empty list
for i in range(10): # range(10) is the same as range(0,10)
variable.append(i+3)
print(i)
顺便说一句,您的代码中不需要while(x<10)
和x=x+1
,因为for循环完全适合您。
答案 2 :(得分:0)
目前,您的代码将variable
定义为:
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12}
你可以用这个单行获得相同的结果:
>>> {i: i + 3 for i in range(10)}
{0: 3, 1: 4, 2: 5, 3: 6, 4: 7, 5: 8, 6: 9, 7: 10, 8: 11, 9: 12}
请注意,使用0到n-1
之间的整数键的dict通常没有意义。为此,您只需使用包含n
元素的列表:
>>> [i + 3 for i in range(10)]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
这意味着你可以写
>>> range(3,13)
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
如果您需要列表列表或列表词典,可以使用以下结构:
>>> {i: [i + j for j in range(3)] for i in range(3)}
{0: [0, 1, 2], 1: [1, 2, 3], 2: [2, 3, 4]}
>>> [[i + j for j in range(3)] for i in range(3)]
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]