Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建一个字典,其中键是列表中的元素,值是从1到n的数字?_Python_Dictionary - Fatal编程技术网

Python 如何创建一个字典,其中键是列表中的元素,值是从1到n的数字?

Python 如何创建一个字典,其中键是列表中的元素,值是从1到n的数字?,python,dictionary,Python,Dictionary,假设我有一个列表l1=[a,b,c,d,e],我想把它映射到一个包含以下内容的字典{a:1,b:2,c:3,d:4,e:5} 我知道如何用一种非常幼稚的方式来做,但我想要更“pythonic”的东西 天真的方式: dic = {} j = 1 for i in list1: dic[i] = j j += 1 使用字典理解如何: >>> {v: k for k, v in enumerate(l1, 1)} {'a': 1, 'b': 2, 'c': 3, '

假设我有一个列表l1=[a,b,c,d,e],我想把它映射到一个包含以下内容的字典{a:1,b:2,c:3,d:4,e:5}

我知道如何用一种非常幼稚的方式来做,但我想要更“pythonic”的东西

天真的方式:

dic = {}
j = 1
for i in list1:
    dic[i] = j
    j += 1

使用字典理解如何:

>>> {v: k for k, v in enumerate(l1, 1)}
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

只是为了弥补之前的失误。。。您可以将
dict
类型构造函数与
itertools.count
zip
一起使用:

>>> L1 = ['a','b','c','d']
>>> from itertools import count
>>> dict(zip(L1, count(1)))
{'c': 3, 'b': 2, 'a': 1, 'd': 4}

@这是非常正确的,但是我更愿意更明确地表达我的观点,我只是同意不同意。说你希望
enumerate()
1
显式开始是显式的,
k+1
是神奇的,并且有一个多余的加法。@AChampion这是一个公平的论点,但我不确定你为什么会认为
k+1
是神奇的?魔法可能很强大,但我个人觉得它需要更多的解释。这很有点像pythonic,谢谢。但是,请看,该列表包含按字母顺序排序的字符串,它们的值也不按顺序排序,例如:{'a':3,'b':1,'c':2}。知道为什么会发生这种情况吗?@AChampion Damnhee,只需要
count(1)
。OP的代码从
0
开始,但文本要求从
1
开始,这是一个很长的一天。您可以
枚举(l1)
并反转或
dict(zip(l1,itertools.count(1))
现在可以了。妥善处理,仍然会导致
name错误:未定义名称“list1”
@StefanPochmann如果您非常关心问题的结构,您可以随意编辑它(如果可以)。别忘了喝牛奶。再见