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

如何从Python列表中获取出现次数最多的元素组合

解决Python列表中出现次数最多的元素组合问题

问题描述

我们需要从嵌套的Python列表中,找出出现次数最多的元素组合;如果多个组合出现频次相同,返回任意一个即可。以下是几个典型场景:

  • 示例1:输入 [['mallesham','yamulla'],['mallesham','yamulla'],['yamulla','mallesham']],['mallesham','yamulla'] 出现2次,是频次最高的组合,输出该组合。
  • 示例2:输入 [['Joe','Doe'],['Doe','Joe'],['Doe','Joe'],['Joe','Doe'],['Doe','Joe']],['Doe','Joe'] 出现3次,频次最高,输出该组合。
  • 示例3:输入 [['Joe','Doe'],['Doe','Joe'],['Doe','Joe'],['Joe','Doe']],两个组合频次相同,返回任意一个即可(如['Joe','Doe'])。

解决方案

利用Python标准库collections.Counter统计频次,核心步骤如下:

  1. 将每个子列表转换为元组(列表不可哈希,无法作为Counter的键);
  2. 用Counter统计所有元组的出现次数;
  3. 获取频次最高的元组,再转换回列表形式返回。

代码实现

from collections import Counter

def most_frequent_combination(lst):
    # 子列表转元组,满足Counter的哈希要求
    tuple_list = [tuple(item) for item in lst]
    # 统计各组合出现次数
    count = Counter(tuple_list)
    # 取出现次数最多的组合,most_common(1)返回[(元组, 次数)]格式
    most_common_tuple = count.most_common(1)[0][0]
    # 转回列表返回
    return list(most_common_tuple)

示例验证

示例1测试

input1 = [['mallesham','yamulla'],['mallesham','yamulla'],['yamulla','mallesham']]
print(most_frequent_combination(input1))  # 输出: ['mallesham', 'yamulla']

示例2测试

input2 = [['Joe','Doe'],['Doe','Joe'],['Doe','Joe'],['Joe','Doe'],['Doe','Joe']]
print(most_frequent_combination(input2))  # 输出: ['Doe', 'Joe']

示例3测试

input3 = [['Joe','Doe'],['Doe','Joe'],['Doe','Joe'],['Joe','Doe']]
print(most_frequent_combination(input3))  # 输出可能是['Joe','Doe']或['Doe','Joe'],均符合要求

说明

  • 当多个组合频次相同时,Counter.most_common(1)会返回遍历中最先遇到的高频组合,满足“返回任意一个”的需求;
  • 方案时间复杂度为O(n),n为列表中子元素的数量,效率较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:48:06