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

时间:2017-11-21 04:09:36

标签: python python-3.x list dictionary

我见过的所有问题都与我想做的完全相反:

说我有一个清单:

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

我希望创建一个字典,其中键是元素编号(从1开始而不是0),list元素是值。像这样:

{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新手来说很困惑的奇怪表示法。

建议非常感谢!谢谢!

4 个答案:

答案 0 :(得分:10)

enumerate有一个start关键字参数,因此您可以根据需要计算任意数量。然后将其传递给dict

dict(enumerate(lst, start=1))

你也可以写字典理解

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

答案 1 :(得分:0)

使用Dict理解并枚举

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

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

使用Dict理解,zip和范围 -

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

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

答案 2 :(得分:0)

默认情况下枚举从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)

答案 3 :(得分:0)

我认为下面的代码应该有所帮助。

my_list = ['A', 'B', 'C', 'D']
my_index = []
my_dict = {}

for i in range(len(my_list)): 
    my_index.append(i+1)

for key in my_index: 
    for value in my_list: 
        my_dict[key] = value