Python代码修复:避免重复输出同一元素的频率统计结果
问题根因
原代码的嵌套遍历逻辑会逐笔读取所有交易中的每个商品并直接输出统计值,没有对跨交易重复出现的同名商品做去重处理,因此某商品在多少笔交易中出现过,就会被重复输出多少次。同时原代码存在多处print语句缺少右括号的语法错误,无法直接正常运行。
修复思路
- 优先按商品首次出现的先后顺序收集所有不重复的商品条目,满足原代码注释中“保持列表顺序”的要求
- 保留原有按“商品出现在多少笔交易中”计算频次的逻辑,不改动统计规则
- 调整输出排版,删除原逻辑中嵌套循环内的多余分割线,仅保留表头、表分隔、表尾的固定分割线
- 修复原代码中所有括号不闭合的语法错误
修复后完整可运行代码
n = int(input("Enter the number of transaction\n")) # 存储所有交易的商品列表 List = [] for i in range(0, n): print("Enter the item at Transaction: ", i+1 ) item = input().split(",") List.append(item) # 打印交易列表 print("---------------------") print(" no | transaction") print("---------------------") for i in range(0, n): print(i+1," ",List[i]) print("----------------") # 统计商品在多少笔交易中出现的频次 def countList(List, x): return sum(x in item for item in List) # 按首次出现顺序收集所有不重复商品,避免重复输出 unique_items = [] for trans_item in List: for x in trans_item: if x not in unique_items: unique_items.append(x) # 打印频次统计表 print("---------------------") print(" Items | Frequency") print("---------------------") for x in unique_items: print(" " + str(x) + " | " + str(countList(List, x))) print("---------------------")
修复后的输出效果
和示例输入对应的输出如下,所有商品仅输出一次,顺序和首次出现的顺序一致:
--------------------- Items | Frequency --------------------- l1 | 3 l2 | 3 l3 | 2 l4 | 2 ---------------------
注:上述代码采用和原代码一致的字符串拼接打印逻辑,完全兼容所有Python版本,无需依赖f-string等高版本语法特性。
内容的提问来源于stack exchange,提问作者user15413198
相关产品推荐
相关产品推荐

