我正在尝试填充一个字典,其中键是整数,值是列表。这些列表只是一个整数列表,字典中的每个位置都会变得越来越长,所以我正在寻找如下结果:
{0:[0], 1:[0,1], 2:[0,1,2], 3:[0,1,2,3] ...
我已经尝试过这个代码
dictfinal = {}
List = []
for i in range(0,3):
但是我得到的结果是:
[0]
{0: [0]}
[0, 1]
{0: [0, 1], 1: [0, 1]}
[0, 1, 2]
{0: [0, 1, 2], 1: [0, 1, 2], 2: [0, 1, 2]}
如您所见,每次迭代似乎之前已定义的键的值似乎都在变化!
当编写相同的代码,但用整数而不是列表填充值时,不会出现此问题...
dictfinal = {}
List = []
for i in range(0,3):
List.append(i)
dictfinal.update({i:i})
print(List)
print(dictfinal)
给予:
[0]
{0: 0}
[0, 1]
{0: 0, 1: 1}
[0, 1, 2]
{0: 0, 1: 1, 2: 2}
这正是我所期望的......那么为什么它在处理列表时不起作用?
感谢您的帮助!
它不起作用,因为您使用相同的列表作为最终字典的每个键的值。
相反,为每个键创建一个独立于其他列表的新列表:
dictfinal = {}
for i in range(3):
dictfinal[i] = list(range(i + 1))
print(dictfinal)
打印:
{0: [0], 1: [0, 1], 2: [0, 1, 2]}