Python字典理解只接受列表中的最后一项值

时间:2017-03-22 10:52:38

标签: python

这就是我正在尝试的:

d = {num1 : num2 for num1 in range(4) for num2 in range(4,8)}

我以为我应该{0 : 4, 1 : 5, 2 : 6, 3 : 7}

我得到的是{0 : 7, 1 : 7, 2 : 7, 3 : 7}

3 个答案:

答案 0 :(得分:4)

如果要同时迭代两个范围,则应使用Level 42 Running In The Family

进行
zip

答案 1 :(得分:1)

嵌套的理解就好像for循环从上到下嵌套一样。因此,您的代码等同于 -

d = {}
for num1 in range(4):
    for num2 in range(4,8):
        d[num1] = num2

每次迭代都会使用最新值更新dict,因此最终得到7。你可能想要@Fernando回答的内容,即

d = dict(zip(range(4), range(4,8)))

答案 2 :(得分:1)

a= dict(zip(range(m), range(m,n)))
print a

这对我有用。在你的情况下它将是

a= dict(zip(range(4), range(4,8)))