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

如何将统计账单列表中账单最多企业的Python代码写得更精简?

代码精简方案

你可以直接使用Python标准库内置的collections.Counter完成频次统计,既可以大幅减少代码量,也能提升运行效率,避免多次遍历列表的冗余操作。精简后保留全部原有功能的代码如下:

from collections import Counter

def company_report(bills):
    """统计账单数量最多的企业,输出格式化报表并返回对应企业列表"""
    # 一步完成企业名提取(大小写统一)+ 频次统计
    company_counter = Counter(bill[0].lower() for bill in bills)
    # 取最高账单数
    max_bill_count = max(company_counter.values())
    # 直接筛选所有账单数等于最大值的企业,天然去重
    top_companies = [comp for comp, cnt in company_counter.items() if cnt == max_bill_count]
    
    # 原有打印逻辑保留不变
    row = "| {:17} | {:5} |"
    print("\n" + "{:=^29}".format(" Most Popular Company "))
    print(row.format("Company", "Bills"))
    print(row.format("-" * 17, "-" * 5))
    for company in top_companies:
        print(row.format(company.title(), max_bill_count))
    print("=" * 29)
    return top_companies

主要优化点说明

  • 用Counter替代手动循环统计:Counter只会遍历一次账单列表完成所有企业的频次统计,你原有写法中companies_bills.count(i)每次调用都会遍历一次全列表,账单数量大的时候效率差距非常明显
  • 省略冗余的索引查找、手动去重步骤:Counter的键本身就是唯一的企业名称,不需要再通过索引反向查找企业,也不用单独写循环去重,逻辑更简洁不易出错
  • 变量命名更清晰,避免无意义的变量名比如dummy,后续维护更容易

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:08