从 enumerate() 交换索引和值?

L S*_*L S 3 python

Pythonenumerate()返回索引和值的元组:

enumerate('abc')
((0,'a'),(1,'b'),(2,'c'))
Run Code Online (Sandbox Code Playgroud)

我想item,index按 ( ('a', 0))顺序获取这些元组。

我怎样才能做到这一点?

我想使用反向元组来创建一个字典,如:

{'a':0,'b':1,'c':2}
Run Code Online (Sandbox Code Playgroud)

zwe*_*wer 6

使用dict理解来反转它:

result = {v: i for i, v in enumerate('abc')}
Run Code Online (Sandbox Code Playgroud)

解决@karakfa的观点 - 这将覆盖可能重复的元素。如果您的字符串是abca,则为其分配的索引值a将包含3,而不是0


And*_*dyK 6

另一种方法是使用 zip:

>>> s = 'abc'
>>> dict(zip(s, range(len(s))))
{'a': 0, 'b': 1, 'c': 2}
Run Code Online (Sandbox Code Playgroud)


Hai*_* Vu 5

One solution is to use the itertools library:

import itertools
dict(zip('abc', itertools.count()))
Run Code Online (Sandbox Code Playgroud)

itertools.count() is a generator object which generates 0, 1, 2... and the zip function just ... well zip the two together.