Python:创建以列表索引号为键、列表元素为值的字典?

2024-04-23 16:47:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到的所有问题与我想做的恰恰相反:

假设我有一个清单:

lst = ['a','b','c']

我正在寻找一个字典,其中键是元素编号(从1开始,而不是0),列表元素是值。像这样:

{1:'a', 2:'b', 3:'c'}

但有一长串。我读过一些关于enumerate()的文章,但是我看到的所有内容都使用list元素作为键。

我发现这个:

dict = {tuple(key): idx for idx, key in enumerate(lst)}

但这会产生:

{'a':1, 'b':2, 'c':3}

。。。这和我想要的正好相反。而且,还有一个奇怪的符号,这让刚接触Python的人感到困惑。

非常感谢您的建议!谢谢!


Tags: key元素内容列表for字典文章dict
3条回答

运用听写理解和列举

print({x:y for x,y in enumerate(lst,1)})

{1:'a',2:'b',3:'c'}

使用听写理解,压缩和范围-

print({x:y for x,y in zip(range(1,len(lst)+1),lst)})

{1:'a',2:'b',3:'c'}

默认情况下,枚举从0开始,但您可以通过第二个参数(即start)设置此值,如果您希望从1开始而不是从0开始,则可以向每个迭代器添加+1:

print({index+1:value for index,value in enumerate(lst)})

输出:

{1: 'a', 2: 'b', 3: 'c'}

以上听写理解同:

dict_1={}
for index,value in enumerate(lst):
    dict_1[index+1]=value
print(dict_1)

enumerate有一个start关键字参数,因此您可以从任意数字中计数。然后把它传给dict

dict(enumerate(lst, start=1))

你也可以写一本字典

{index: x for index, x in enumerate(lst, start=1)}

相关问题 更多 >