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

Python3统计列表元素出现次数并降序排序,求更Pythonic实现

Python 列表元素计数与降序排序的Pythonic实现

需求说明

统计列表Names中各元素的出现次数,并按照出现次数降序输出结果。

原有代码可优化点

  • 冗余变量aux_list无实际作用,且if name is not aux_list属于逻辑错误(判断的是对象内存地址,永远返回True,相当于无效判断)
  • 循环内重复调用list.count(),时间复杂度为O(n²),列表元素越多性能损耗越明显
  • 逐次构造单键字典再调用update()更新总字典的写法过于冗余

最优Pythonic实现

Python标准库collections中的Counter是专门用于元素计数的工具,内置的most_common()方法直接支持按出现次数降序返回结果,代码极简且性能最优:

from collections import Counter

names = ["Jessica", "John", "Steve", "John", "John", "Steve"]
# 计数+排序+输出一气呵成
for name, count in Counter(names).most_common():
    print(name, count)

无额外导入的原生实现

如果不想引入标准库导入,也可以用原生字典实现,写法同样简洁高效:

names = ["Jessica", "John", "Steve", "John", "John", "Steve"]
count_map = {}
for name in names:
    count_map[name] = count_map.get(name, 0) + 1

# 按计数降序排序后输出
for name, count in sorted(count_map.items(), key=lambda x:x[1], reverse=True):
    print(name, count)

两种实现的输出都和要求的结果完全一致:

John 3
Steve 2
Jessica 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:06:06