You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用循环(非正则表达式)统计文件扩展名出现次数?

问题分析与修正代码

你的代码存在几个关键问题:

  • 第一个return(arr)直接终止了函数,导致后面统计频率的代码完全不会执行
  • i.split(".")返回的是列表(比如"image1.jpg"会变成["image1", "jpg"]),你直接把这个列表当作字典的键是错误的,应该取列表的最后一个元素作为扩展名
  • 统计频率时使用了未定义的变量item,同时循环变量i在这里是分割后的列表,不是扩展名
  • return语句后的print永远不会执行,因为return会直接结束函数

以下是修正后的代码,完全用循环实现:

def count_file_types(string_arr): 
    freq = {}
    for filename in string_arr:
        # 分割文件名,取最后一部分作为扩展名
        parts = filename.split(".")
        # 处理没有扩展名的情况(比如"readme"),这里默认设为空字符串,也可根据需求忽略这类文件
        ext = parts[-1] if len(parts) > 1 else ""
        # 更新频率字典
        if ext in freq:
            freq[ext] += 1
        else:
            freq[ext] = 1
    return freq

# 测试示例
print(count_file_types(['image1.jpg', 'image2.jpg', 'preso.pptx']))
# 输出: {'jpg': 2, 'pptx': 1}

如果不需要处理无扩展名的文件,可以改成:

def count_file_types(string_arr): 
    freq = {}
    for filename in string_arr:
        if "." in filename:  # 先判断是否有扩展名
            ext = filename.split(".")[-1]
            if ext in freq:
                freq[ext] += 1
            else:
                freq[ext] = 1
    return freq

内容的提问来源于stack exchange,提问作者Evanto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:27:40