【问题标题】:How to find all the indexes of a recurring item in a list? [duplicate]如何在列表中查找重复项的所有索引? [复制]
【发布时间】:2023-03-15 01:16:01
【问题描述】:

如何找到重复项目的所有索引?例如:

list = ['A', 'A', 'B', 'A', 'B', 'B', 'A']

我想返回所有出现的“B”,所以它会返回:

indexes = [2, 4, 5]

【问题讨论】:

标签: python python-3.x list


【解决方案1】:

在此处使用enumerate

>>> l = ['A','A','B','A','B','B','A']
>>> [i for i,d in enumerate(l) if d=='B']
[2, 4, 5]

【讨论】:

  • 我谦虚的要求那些反对答案的人应该提供解释,以便我们改进。我们没想到会与声望很高的人进行这种窃听。
  • 我投了反对票,因为我认为这只是另一个答案的副本。像这样的问题应该完全删除,因为简单的事实 OP 甚至没有做出最小的努力来找到答案。
  • @AntonvBR 这并不意味着您对工作答案投反对票。您可以将其报告为重复或至少提出一个标志。不接受对有效答案投反对票。
  • 我的错,你是对的,随着时间的流逝,再也无法撤消
  • 等等...我刚道歉,你就反击了?无论如何,也许您应该投反对票。
【解决方案2】:

永远不会使用默认数据结构,例如list, dict 作为变量。

应该这样做:

from collections import defaultdict

# Create a dict with empty list as default value.
d = defaultdict(list)

# Initialise the list.
l = ['A','A','B','A','B','B','A']

# Iterate list with enumerate.
for index, e in enumerate(l):
    d[e].append(index)

# Print out the occurrence of 'B'. 
print(d['B'])

输出:

[2, 4, 5]

【讨论】:

  • 嗯。这个答案值得否决吗?你能详细说明原因吗?
  • 好吧,我没有对你投反对票.. 但你没有很好地解释你的答案.. 乍一看,我认为你说不要使用默认数据结构列表,dict 为一个变量,但随后您使用“列表”创建了一个变量...如果措辞不当,可能会被不知道自己在做什么的人混淆...并认为您自相矛盾...我明白了你不是什么意思,所以我会给你一个偶数 0,但你应该澄清更多。
  • @Procyclinsur 感谢您让我知道潜在的混乱。刚刚修正了我的答案。
猜你喜欢
  • 2021-04-05
  • 2013-03-29
  • 2021-01-12
  • 1970-01-01
  • 2017-12-03
  • 2019-09-15
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
相关资源
最近更新 更多