如何打印Python Counter对象中的前3个元素?
解决Counter对象无法通过列表下标取前N个元素的问题
嘿,这个问题我之前也踩过坑!你直接用print(Counter[0,1,2])肯定会报错,因为Counter是字典的子类,它不是序列类型,不能用列表下标这种方式来访问元素——这会被当成你要取键为(0,1,2)的值,自然会抛出KeyError。
要得到你想要的前3个元素组成的字典,最简洁高效的方法是用Counter自带的most_common()方法,步骤如下:
具体实现代码
首先导入Counter并定义你的对象:
from collections import Counter # 你的Counter对象 city_counter = Counter({'Pittsburgh': 494.51, 'Austin': 380.6, 'Fort Worth': 368.45, 'New York': 297.8, 'Stockton': 248.18, 'Omaha': 236.63, 'San Jose': 215.05, 'San Diego': 67.08, 'Corpus Christi': 26.38})
然后用most_common(3)获取前3个按值从高到低排序的元素(返回元组列表),再转成字典:
top_3_cities = dict(city_counter.most_common(3)) print(top_3_cities)
执行后输出正好是你想要的结果:
{'Pittsburgh': 494.51, 'Austin': 380.6, 'Fort Worth': 368.45}
补充说明
most_common(n)方法会返回Counter中值从大到小排序的前n个元素,每个元素是(键, 值)的元组,完美匹配你要取排名前三的需求。- 如果你手动遍历Counter的items来取前3个,虽然也能实现,但
most_common()是官方提供的最优方法,代码更简洁也更易读。
内容的提问来源于stack exchange,提问作者user9212713
相关产品推荐
相关产品推荐

