如何高效对比并合并Python二维列表中同类目关联字段?
解决Python二维列表按分类合并数值字段的问题
这里有个实用的方案,核心思路是用字典分组——把(主分类, 子分类)的组合作为字典的键,精准把同分类下的数值串收集到一起,最后再转回你需要的二维列表格式:
# 你的原始二维列表 original_list = [ ["CatA", "SubCatA", "3,4"], ["CatB", "SubCatA", "1,2"], ["CatA", "SubCatA", "5,9"], ["CatA", "SubCatB", "4,7"] ] # 初始化字典用于分组,键是(Cat, SubCat)元组,值是数值的列表 grouped_data = {} for category, sub_category, num_str in original_list: # 用元组做唯一标识键 key = (category, sub_category) # 拆分当前的数值字符串,添加到对应分组 if key not in grouped_data: grouped_data[key] = [] grouped_data[key].extend(num_str.split(",")) # 将分组后的字典转换回目标二维列表 merged_list = [[key[0], key[1], ",".join(values)] for key, values in grouped_data.items()] # 输出结果看看 print(merged_list)
代码逻辑说明:
- 用元组
(category, sub_category)作为字典键,完美匹配“主分类+子分类”的唯一组合要求; - 遍历原始列表时,把每个元素的数值串按逗号拆分,追加到对应分组的列表里;
- 最后用列表推导式把字典转成你要的格式,把收集到的数值列表用逗号拼接成字符串。
另外要注意:Python 3.7及以上版本的字典是插入有序的,所以最终的merged_list会保持原始列表中各组首次出现的顺序,和你给出的示例结果顺序完全一致~
内容的提问来源于stack exchange,提问作者vc0
相关产品推荐
相关产品推荐

