Python仅用内置函数实现嵌套列表按key分组求和(不使用pandas)
Python列表分组求和问题解答
原代码错误原因
- 判断逻辑错误:
result中存储的是[分类标识, 数值]结构的子列表,直接判断字符串类型的分类标识x是否存在于result中,永远会返回False,因此循环只会一直执行追加操作,永远不会进入求和分支,最终结果和原列表结构近似。 - 取值下标错误:即使进入else分支,代码中的
result[1]是取整个结果列表的第二个元素,并非与当前x匹配的那条记录的数值位,会出现取值错误、求和位置错误的问题。
正确实现(仅使用Python内置函数,无需第三方库)
我们可以用内置的字典结构做分组统计,最终转换为要求的列表格式即可:
list_data = [ ['a', 1], ['b', 1], ['a', 2], ['a', 2], ] # 用字典做分组计数 count_dict = {} for cate, num in list_data: count_dict[cate] = count_dict.get(cate, 0) + int(num) # 转换为要求的输出格式 result = [[k, v] for k, v in count_dict.items()] print(result)
运行输出:
[['a', 5], ['b', 1]]
内容的提问来源于stack exchange,提问作者Luis Alejandro Vargas Ramos
相关产品推荐
相关产品推荐

