python 列表中重复项的索引

如果您有一个包含重复元素的列表,如下所示,如何获取该元素每次出现的索引?

这是我的例子。

'''

listy = ["apples", "oranges", "apples", "bananas", "apples", "bananas"]
print (listy.index("bananas"))

'''

您可以看到它只会产生一个结果 - 3,这是正确的,但它只是列表中的香蕉元素之一。

如果您想查找任何元素的所有其他元素的索引该怎么办?有办法做到吗?


德玛西亚99
浏览 192回答 3
3回答

胡子哥哥

作为一项学术练习:listy = ["apples", "oranges", "apples", "bananas", "apples", "bananas"]d = {k:[] for k in set(listy)}for i,e in enumerate(listy):   d[e].append(i)print(d)print('bananas', d['bananas'])输出{'oranges': [1], 'bananas': [3, 5], 'apples': [0, 2, 4]}bananas [3, 5]

小唯快跑啊

如果您的列表不断变化,您可以创建一个在您需要时检查索引的函数。find_instance = lambda ele,lst : [i for i,j in enumerate(lst) if j==ele]# To get indexesfind_instance('bananas', listy)如果您的列表是静态的,您可以用来defaultdict存储索引并从中获取索引。它会更快,因为它不会在每次需要索引时迭代列表。from collections import defaultdictmy_indexes = defaultdict(list)for i, j in enumerate(listy):    my_indexes[j].append(i)# To get indexesprint(my_indexes['bananas'])

富国沪深

所有好的答案。谢谢你!我知道这不是一个很难的问题,但还是被困住了。有时候,多思考一点来激发自己的思维是件好事。:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python