我有一个如下所示的列表:
listWords = ['foo', 'bar', 'foobar', 'foo', 'bar']
然后我想在列表中使用枚举来获取单词位置,但输出应该如下所示:
foo [0,3]
bar [1,4]
foobar [2]
我正在考虑使用一个集合,因为它将获取唯一值,然后使用索引的计数器进行枚举?
答案 0 :(得分:3)
使用字典,并为值列表添加索引:
indices_per_word = {}
for index, word in enumerate(listWords):
indices_per_word.setdefault(word, []).append(index)
对于您的样本,这会产生:
>>> listWords = ['foo', 'bar', 'foobar', 'foo', 'bar']
>>> indices_per_word = {}
>>> for index, word in enumerate(listWords):
... indices_per_word.setdefault(word, []).append(index)
...
>>> indices_per_word
{'bar': [1, 4], 'foo': [0, 3], 'foobar': [2]}
>>> for word, indices in indices_per_word.items():
... print(word, indices)
...
bar [1, 4]
foo [0, 3]
foobar [2]
答案 1 :(得分:0)
可以使用defaultdict来完成,如下所示:
from collections import defaultdict
indices_per_word = defaultdict(list)
for index, word in enumerate(listWords):
indices_per_word[word].append(index)
indices_per_word
defaultdict(<type 'list'>, {'foobar': [2], 'foo': [0, 3], 'bar': [1, 4]})