我正在尝试生成一些代码,例如:
{1:7,2:8,3:9,4:10}
和
{i:j for i in range(1,5) for j in range(7,11)}
产生
{1:10, 2:10, 3:10, 4:10}
我该如何解决?
谢谢
最佳答案
使用 zip
:
>>> dict(zip(range(1,5), range(7,11)))
{1: 7, 2: 8, 3: 9, 4: 10}
使用 dict comprehension :
>>> {k:v for k, v in zip(range(1,5), range(7,11))}
{1: 7, 2: 8, 3: 9, 4: 10}
>>> {x:x+6 for x in range(1,5)}
{1: 7, 2: 8, 3: 9, 4: 10}
为什么您的代码不起作用:
您的代码类似于以下代码:
ret = {}
for i in range(1,5):
for j in range(7,11):
ret[i] = j
# ret[i] = 10 is executed at last for every `i`.
关于具有两个范围的python dict理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18789262/