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

如何编写popvote函数统计CSV第4列最热品类并以集合格式返回

代码问题说明

原有代码存在以下核心错误:

  • 遍历列表时反复覆盖变量g,最终仅保留最后一行的处理结果,完全缺失频次统计逻辑
  • 误用列表sort方法,该方法为原地排序方法无返回值,也无法实现频次统计需求
  • 没有实现提取索引为3的品类字段的逻辑,也没有频次计数、筛选最高频次值的相关步骤
实现代码

假设传入函数的list参数是CSV每行按逗号拆分后形成的子列表组成的总列表,以下实现可直接满足需求:

推荐版本(使用内置统计工具,代码简洁性能高)

from collections import Counter

def popvote(list):
    # 提取所有行索引为3的品类字段
    category_list = [row[3] for row in list]
    # 统计各品类出现频次
    count_result = Counter(category_list)
    # 得到最高频次值
    max_freq = max(count_result.values())
    # 筛选所有频次等于最高值的品类,转为集合返回
    return {cate for cate, cnt in count_result.items() if cnt == max_freq}

调用示例:

# 样例输入(csv拆分后的结构)
input_data = [
    ['1','8dac2b','ewmzr','jewelry','phone0','9759243157894736','us','69.166.231.58','vasstdc27m7nks3'],
    ['2','668d39','aeqok','furniture','phone1','9759243157894736','jp','50.201.125.84','jmqlhflrzwuay9c'],
    ['3','622r49','arqek','vehicle','phone2','9759544365415694736','az','53.001.135.54','weqlhrerreuert6f'],
    ['4','6444t43','rrdwk','vehicle','phone9','9759543263245434353','au','54.241.234.64','weqqyqtqwrtert6f']
]
print(popvote(input_data))
# 输出:{'vehicle'},符合预期

无依赖手动统计版本

如果要求不使用collections.Counter,可使用手动统计的实现:

def popvote(list):
    count_dict = {}
    for row in list:
        cate = row[3]
        count_dict[cate] = count_dict.get(cate, 0) + 1
    max_freq = max(count_dict.values())
    return {cate for cate, cnt in count_dict.items() if cnt == max_freq}

该实现同时支持多个品类并列最高频次的场景,所有符合最高频次的品类都会被包含在返回的集合中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:04