Python 3.x 如何在python3中创建字典?

Python 3.x 如何在python3中创建字典?,python-3.x,dictionary,Python 3.x,Dictionary,我有一个数组 months=['January','February','March','April','May','June','July','August','September','October','November','December'] 我想让它像字典一样 months = {1:'January', 2:'February',....} 我尝试了enumerate(),但没有任何运气。 如何将序列号分配给列表以生成字典? 提前谢谢 试试这个 months= ['January

我有一个数组

months=['January','February','March','April','May','June','July','August','September','October','November','December']
我想让它像字典一样

months = {1:'January', 2:'February',....}
我尝试了
enumerate()
,但没有任何运气。 如何将序列号分配给列表以生成字典? 提前谢谢

试试这个

months=
['January','February','March','April','May','June','July','August','September','October','November','December']

dict = {i+1:months[i] for i in range(12)}

正如评论中指出的,使用范围(len(月))。由于列表的长度在本例中是已知的,因此我使用了12。

如果您想继续使用enumerate,可以这样做:

months =['January','February','March','April','May','June','July','August','September','October','November','December']

d_months = {}

for i, month in enumerate(months):
    d_months[i+1] = month

print(d_months)
输出:

{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}

由于枚举从0开始,您需要使用
[i+1]

尝试像这样使用
eumerate
强制它从1开始

months =['January','February','March','April','May','June','July','August','September','October','November','December']
months = {i:m for i,m in enumerate(months,1)}
print months
将产生

{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}
由于
dict()
构造函数直接从键值对构建字典,因此它也可以:

dict(enumerate(months, 1))
以下是一些测试,尽管这对您的用例并不重要:

timeit dict(enumerate(months, 1))
The slowest run took 10.34 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.37 µs per loop

timeit {i:m for i,m in enumerate(months,1)}
The slowest run took 7.77 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.28 µs per loop

timeit {i+1:months[i] for i in range(12)}
The slowest run took 5.42 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.89 µs per loop
请试试这个

{i:months[i] for i in range(len(months))}

@伊凡内夫斯特鲁耶夫:是的。我应该提到这一点。因为我们事先知道这个案子的长度,所以我觉得没有必要。将编辑我的答案:)@AbhirathMahipal我也使用了
range
。非常感谢。您还可以使用
enumerate
,如
{i+1:m代表i,m在enumerate(months)}
,以防有一天它们会增加一些额外的月份;-)谢谢分享比较。是你写的代码吗?