如何统计嵌套列表首索引重复值并对最高频值对应次索引求和
问题解决代码实现
原代码存在的问题
- 硬编码仅统计首索引为2的情况,未提前判断1和2哪个出现次数更高
- 存在语法错误:
if判断语句末尾缺失冒号,循环前对未定义的m[0]赋值会直接报错 - 仅统计了出现次数,未对第二个索引的值做累加,最后输出
v[1]逻辑错误,v本身已经是子列表的第二个元素,无需再次取索引
正确实现代码
题目明确说明首索引只会出现1、2两种值,我们可以分别统计两个值的出现次数和对应第二个索引的累加和,再比较次数输出结果:
my_list = [[2, 1], [2, 1], [2, 1], [1, 2]] # 分别初始化1、2的计数和对应第二个值的累加和 count_1 = 0 sum_1 = 0 count_2 = 0 sum_2 = 0 for item in my_list: first_val = item[0] second_val = item[1] if first_val == 1: count_1 += 1 sum_1 += second_val else: count_2 += 1 sum_2 += second_val # 比较出现次数,输出次数更高的结果 if count_1 > count_2: print(f"{1} , {sum_1}") else: print(f"{2} , {sum_2}")
运行效果
输入示例[[2, 1], [2, 1], [2, 1], [1, 2]]时,运行后输出:2 , 3,和需求要求的结果一致。
内容的提问来源于stack exchange,提问作者user16871229
相关产品推荐
相关产品推荐

