具有两个范围的python dict理解

标签 python dictionary list-comprehension

我正在尝试生成一些代码,例如:

{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/

相关文章:

python数据框到字典,键值问题

python - 列表理解 : why is this a syntax error?

python - 使用列表理解查找素数

python - 在特定元素的实例之后从列表中提取相同的元素 block

python - 应用程序范围的异常处理程序是否有意义?

Python 使用 pandas 从数据框中提取列的全部内容

python - 在 `QTableWidget`中将整列设置为python中的只读

python - url中的当前参数在django中的下一个url中设置

c++ - 将平铺 basemap 添加到 QGraphicsScene

python - 判断两个字典是否导致循环