Python 字典理解创建偶数字典

Python 字典理解创建偶数字典,python,python-3.x,dictionary-comprehension,Python,Python 3.x,Dictionary Comprehension,我想使用字典理解创建一个偶数字典,其中键是连续整数 输出应为: 我使用了两行代码,一行是列表理解以获得偶数,第二行是字典理解以获得所需的输出 我使用的代码如下: 我的问题是,我们是否可以使用一行只涉及词典理解的代码来获得所需的输出,而不是使用两行代码?根据您所需的输出,您可以简单地执行以下操作: d = {x: 2*x for x in range(1, 5)} 按照现在的方式,您必须在之前定义evens,因为您在dict理解中有两个地方使用它:迭代索引和获取实际元素。通常,只要同时需要索引和

我想使用字典理解创建一个偶数字典,其中键是连续整数

输出应为:

我使用了两行代码,一行是列表理解以获得偶数,第二行是字典理解以获得所需的输出

我使用的代码如下:


我的问题是,我们是否可以使用一行只涉及词典理解的代码来获得所需的输出,而不是使用两行代码?

根据您所需的输出,您可以简单地执行以下操作:

d = {x: 2*x for x in range(1, 5)}

按照现在的方式,您必须在之前定义
evens
,因为您在dict理解中有两个地方使用它:迭代索引和获取实际元素。通常,只要同时需要索引和元素,就可以使用
enumerate
,如果要偏移索引,可以使用
start
参数:

even_dict = {i: x for i, x in enumerate(evens, start=1)}
现在,您只需要
evens
一次,就可以将其“内联”到听写理解中:

even_dict = {i: x for i, x in enumerate([number for number in range(1,10) if number%2==0], start=1)}
但是你根本不需要那种内在的理解;要获得偶数,只需使用
范围
步骤
参数:

even_dict = {i: x for i, x in enumerate(range(2, 10, 2), start=1)}
最后,在这个特殊的情况下,您甚至不需要它,因为您可以将键与2相乘得到值,如中所示

even_dict = {i: x for i, x in enumerate([number for number in range(1,10) if number%2==0], start=1)}
even_dict = {i: x for i, x in enumerate(range(2, 10, 2), start=1)}