0

我有很多单词的列表。

从中,我想创建一个字典,其中包含列表中的每个唯一单词作为键,并且它出现在(列表索引)中的第一个位置作为键的值。

有没有一种有效的方法来做到这一点?

4

5 回答 5

5
>>> 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}
于 2012-04-20T12:13:12.687 回答
4

由于无论如何您都必须查看每个单词,因此不会比这更快:

index = {}

for position, word in enumerate(list_of_words):
    if word not in index:
        index[word] = position
于 2012-04-20T12:13:29.483 回答
1
>>> 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}
于 2012-04-20T12:34:21.413 回答
0

@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}
于 2012-04-20T12:28:21.990 回答
0

尝试这个

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}

于 2013-01-23T06:18:43.367 回答