如何编写Python函数返回CSV第四列出现次数最多的值且以集合返回
问题解决代码及说明
原代码错误点
- 变量名使用了Python内置关键字
list,会覆盖原生列表功能,属于命名不规范 - 没有实现CSV行的切割逻辑,无法提取第四列的数值
- 缺失频率统计步骤,直接调用max的逻辑完全不符合需求
- 判断相等误用了赋值符号
=,属于基础语法错误 - 没有处理返回值为set类型的要求
修正后的实现代码
from collections import Counter def popvote(csv_lines): # 提取所有行的第四列(索引为3,从0开始计数) col4_list = [line.split(',')[3] for line in csv_lines] # 统计每个值的出现频率 count_res = Counter(col4_list) # 找出最高出现频率 max_count = max(count_res.values()) # 筛选所有频率等于最高值的元素(可处理并列最高的情况) max_items = {item for item, count in count_res.items() if count == max_count} return max_items
测试验证
用你提供的CSV示例测试:
# 示例CSV行列表 test_csv = [ "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(test_csv)) # 输出:{'vehicle'},符合需求
内容的提问来源于stack exchange,提问作者jordan parker
相关产品推荐
相关产品推荐

