You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中确定列表的列表中出现次数最多的元素(无第三方包)

无需第三方包的列表子元素多数查找方案

方法一:内置字典统计法(通用场景)

通过Python内置字典统计每个子元素的出现次数,再筛选出次数最多的元素。由于列表不可作为字典键,需先将子列表转为可哈希的元组。

代码示例:

data = [ ["hello", 1], ["hello", 1], ["hello", 1], ["other", 32] ]

# 统计每个子元素的出现次数
count_dict = {}
for sub_list in data:
    # 将子列表转为元组作为字典键
    key = tuple(sub_list)
    count_dict[key] = count_dict.get(key, 0) + 1

# 找出出现次数最多的元素
max_count = -1
majority_item = None
for key, cnt in count_dict.items():
    if cnt > max_count:
        max_count = cnt
        majority_item = list(key)  # 转回列表格式

print(majority_item)  # 输出: ['hello', 1]

方法二:摩尔投票法(绝对多数场景)

如果确定目标元素是绝对多数(出现次数超过总元素数的一半),可以用摩尔投票法,空间复杂度仅为O(1),无需额外存储统计数据。

代码示例:

data = [ ["hello", 1], ["hello", 1], ["hello", 1], ["other", 32] ]

# 摩尔投票法筛选候选元素
candidate = None
vote_count = 0

for sub_list in data:
    if vote_count == 0:
        candidate = sub_list
        vote_count = 1
    else:
        vote_count += 1 if sub_list == candidate else -1

# 可选:验证候选元素是否真的是绝对多数
verify_count = sum(1 for item in data if item == candidate)
if verify_count > len(data) // 2:
    print(candidate)  # 输出: ['hello', 1]
else:
    print("不存在绝对多数元素")

适用场景说明

  • 字典统计法:适用于所有情况,无论是否存在绝对多数,都能找出出现次数最多的元素,但需要O(n)的空间存储统计结果。
  • 摩尔投票法:仅适用于存在绝对多数元素的场景,优点是空间开销极小,但如果不确定存在绝对多数,需要额外验证步骤。

内容的提问来源于stack exchange,提问作者bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:45:33