为了账号安全,请及时绑定邮箱和手机立即绑定

python 列表中重复项的索引

python 列表中重复项的索引

德玛西亚99 2023-12-12 21:36:10
如果您有一个包含重复元素的列表,如下所示,如何获取该元素每次出现的索引?这是我的例子。'''listy = ["apples", "oranges", "apples", "bananas", "apples", "bananas"] print (listy.index("bananas"))'''您可以看到它只会产生一个结果 - 3,这是正确的,但它只是列表中的香蕉元素之一。如果您想查找任何元素的所有其他元素的索引该怎么办?有办法做到吗?
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

作为一项学术练习:


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]


查看完整回答
反对 回复 2023-12-12
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

如果您的列表不断变化,您可以创建一个在您需要时检查索引的函数。


find_instance = lambda ele,lst : [i for i,j in enumerate(lst) if j==ele]

# To get indexes

find_instance('bananas', listy)

如果您的列表是静态的,您可以用来defaultdict存储索引并从中获取索引。它会更快,因为它不会在每次需要索引时迭代列表。


from collections import defaultdict

my_indexes = defaultdict(list)

for i, j in enumerate(listy):

    my_indexes[j].append(i)

# To get indexes

print(my_indexes['bananas'])


查看完整回答
反对 回复 2023-12-12
?
富国沪深

TA贡献1790条经验 获得超9个赞

所有好的答案。谢谢你!

我知道这不是一个很难的问题,但还是被困住了。

有时候,多思考一点来激发自己的思维是件好事。:)


查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信