我有很多单词的列表。
从中,我想创建一个字典,其中包含列表中的每个唯一单词作为键,并且它出现在(列表索引)中的第一个位置作为键的值。
有没有一种有效的方法来做到这一点?
>>> l = ['a', 'b', 'c', 'b', 'a', 'd']
>>> import itertools as it
>>> dict(it.izip(reversed(l), reversed(xrange(len(l)))))
{'a': 0, 'b': 1, 'c': 2, 'd': 5}
由于无论如何您都必须查看每个单词,因此不会比这更快:
index = {}
for position, word in enumerate(list_of_words):
if word not in index:
index[word] = position
>>> l = ['a', 'b', 'c', 'b', 'a', 'd']
>>> dic = {l[i]:i for i in range(len(l)-1,-1,-1)}
>>> print(dic)
{'a': 0, 'c': 2, 'b': 1, 'd': 5}
@eumiro 解决方案的修改版
>>> from itertools import count, izip
>>> l = ['a', 'b', 'c', 'b', 'a', 'd']
>>> dict(izip(reversed(l),count(len(l)-1,-1))) #In Py 3 just use zip
{'a': 0, 'c': 2, 'b': 1, 'd': 5}
尝试这个
l = ['a', 'b', 'c', 'b', 'a', 'd']
l2 = set(l)
mydict = {v:l.index(v) for v in l2}
输出
{'a': 0, 'b': 1, 'c': 2, 'd': 5}