Python实现文件名拆分后元素的分组与出现次数统计
文件分组统计解决方案
问题描述
我有50个遵循特定命名规则的文件,可通过下划线“_”拆分文件名,取拆分后的第3个元素(索引为3)获取产品名称。已导入文件路径并将文件存入变量,能完成拆分并输出列表,但无法按名称(如Books、Papers等)分组统计各元素的出现次数,期望得到类似“apple 4”“orange 9”格式的统计结果。现有代码如下:
import os # local path to files. path_in = '/Users/username/Downloads/my_list' for file in os.listdir(path_in): # split produce item by name via '_' delimiter. split_file = file.lower().split('_') # 3rd Element only since produce.
解决代码
import os from collections import defaultdict # 文件路径 path_in = '/Users/username/Downloads/my_list' # 初始化统计字典,默认计数为0 product_counts = defaultdict(int) for file in os.listdir(path_in): split_parts = file.lower().split('_') # 避免文件名不符合规则导致索引越界 if len(split_parts) > 3: product = split_parts[3] product_counts[product] += 1 # 按要求格式输出统计结果 for name, count in product_counts.items(): # 左对齐占10个字符,保证名称和数字间的空格整齐 print(f"{name:<10}{count}")
关键说明
- 用
defaultdict可以直接对不存在的键计数,无需额外判断,简化代码 - 增加长度检查,防止部分文件名拆分后元素不足导致报错
- 格式化输出时用
<10控制名称的宽度,让结果格式统一,可根据实际需求调整宽度值
内容的提问来源于stack exchange,提问作者iOS Newbie
相关产品推荐
相关产品推荐

