【问题标题】:How to find most repeated element in a list Python?如何在列表Python中找到重复次数最多的元素?
【发布时间】:2020-12-04 01:36:39
【问题描述】:

我目前正在为此使用 Counter() 方法。但是我面临的问题是,当有多个元素具有相同数量的值时,我会得到列表中第一个出现的数字的 out of key value。

a=[1,3,2,2,3]  
coun=Counter(a)
print(coun.most_common(1))

输出:[(3,2)]

a=[1,2,3,2,3]  
coun=Counter(a)
print(coun.most_common(1))

输出:[(2,2)]

我想获得较低的键值,而不是第一个出现的键值,即此处的 2 与顺序无关。我可以对列表进行排序,但我认为排序会占用大量时间。 请帮忙 很抱歉格式混乱。

【问题讨论】:

  • 对列表进行排序不是问题,除非它真的很大(100k+ 项)。即使那样我也会测试它是否会很慢
  • @Exelian 是的。根据测试用例,我相信输入列表相当大,所以我不想冒险搜索是否有更简单的方法

标签: python python-3.x list counter


【解决方案1】:

根据您期望的重复数量,您可以简单地检查更多most_common 值吗?假设不超过 100 个值的数量完全相同,您可以简单地这样做:

print(sorted(coun.most_common(100))[0])

当然,您可以为 100 使用不同的值。但是现在要排序的列表最多是 100 个元组,这当然不是问题。

【讨论】:

  • 请注意,如果要排序的元素是代表数字的字符串,这将无法正确排序:sorted(Counter(['12', '1', '2', '9']).most_common(3)) 将返回 [('1', 1), ('12', 1), ('2', 1)]
  • 啊,是的,当然。问题中有数字,所以我认为这不是问题,但您也可以在 sorted 调用中添加 key 函数来解决任何排序问题
猜你喜欢
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2022-08-09
  • 2020-02-13
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
相关资源
最近更新 更多