我见过的所有问题都与我想做的完全相反:
说我有一个清单:
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新手来说很困惑的奇怪表示法。
建议非常感谢!谢谢!
答案 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