如何将TXT交易数据转为值为列表的字典并统计项出现频率?
解决方案
修正字典生成并统计频率
原代码存在两个问题:一是用lines.index(line)获取索引会导致重复行的索引冲突,二是未将字符串转换为可遍历的项列表。以下是修正后的完整代码,同时实现项频率统计:
from collections import Counter # 初始化存储交易的字典和频率计数器 transaction_dict = {} item_frequency = Counter() # 读取txt文件并处理 with open('text.txt', 'r') as file: # 使用enumerate直接获取行索引和内容,避免重复行索引错误 for row_idx, line in enumerate(file): # 去除首尾空白后,按空格分割成项的列表 items = line.strip().split() transaction_dict[row_idx] = items # 更新频率统计 item_frequency.update(items)
频率统计结果表格
按项名称排序后的统计结果如下:
| item | frequency |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 2 |
| 6 | 2 |
| 7 | 1 |
| 8 | 2 |
| 9 | 1 |
| 10 | 1 |
| 11 | 2 |
| 12 | 2 |
| 13 | 1 |
| 14 | 1 |
| 15 | 2 |
| 19 | 1 |
| 20 | 2 |
| 21 | 1 |
| 27 | 2 |
| 29 | 1 |
| 31 | 1 |
| 41 | 3 |
| 44 | 1 |
| 65 | 3 |
| 81 | 1 |
内容的提问来源于stack exchange,提问作者bookworm 1510
相关产品推荐
相关产品推荐

