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 に答える