我想创建这个具有列表理解能力的对象:
{2012: 2012,
2013: 2013,
2014: 2014,
2015: 2015,
2016: 2016,
2017: 2017,
2018: 2018,
2019: 2019,
2020: 2020}
我试过了:
In [59]: [{x: x} for x in range(2012,2020,1)]
Out[59]:
[{2012: 2012},
{2013: 2013},
{2014: 2014},
{2015: 2015},
{2016: 2016},
{2017: 2017},
{2018: 2018},
{2019: 2019},
{2020: 2020}]
这不是我需要的确切输出。我也尝试过[dict(x: x) for x in range(2012,2020,1)]
,但这是无效的语法。我该如何实现上述结果?
列表理解总是创建一个列表。运用字典理解来制作字典。
{x: x for x in range(2012, 2021)}
还要注意,range()
不包括结束值,因此如果希望最后一个值为2020
,则需要使用range(2012, 2021)
。
您可以简单地通过字典理解获得所需的输出
result = {x: x for x in range(2012, 2021)}
print(result)
>>> {2012: 2012, 2013: 2013, 2014: 2014, 2015: 2015, 2016: 2016, 2017: 2017, 2018: 2018, 2019: 2019, 2020: 2020}
如果您想进行列表理解
d={}
[d.update({x: x}) for x in range(2012,2021)]
print(d)
>>> {2012: 2012, 2013: 2013, 2014: 2014, 2015: 2015, 2016: 2016, 2017: 2017, 2018: 2018, 2019: 2019, 2020: 2020}