您的位置:首页 > 编程语言 > Python开发

【Python】利用count函数求list中每个元素出现的次数,求众数的改进

2015-12-14 16:45 756 查看
在《【Python】利用setdefault函数实现dict的转置(key与value对互换),统计value出现的次数》(点击打开链接)中介绍过,如何统计dict中相同value的key的出现次数。本文介绍如何利用list自带的count函数,来统计list中每个元素出现的次数。

具体代码如下:

arr_appear=dict((a,arr.count(a)) for a in arr);

是的,就一行,其中arr_appear是一个dict,arr是要统计的list。
如下代码:

# -*-coding:utf-8-*-
arr = [1, 2, 3, 2, 3, 1, 4];
arr_appear = dict((a, arr.count(a)) for a in arr);
print arr_appear;

运行结果如下:



完成了一个求list中每个元素出现的次数的功能,返回一个dict,这个dict的key是list本身的元素,value是出现的次数。

本来arr.count(a),只是返回该元素的出现次数,这里只是在遍历这个list的同时,构造一个相应dict。

有了如上的理论,我们可以对《【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印到控制台》(点击打开链接)中介绍过,求众数的方法进行改造,具体的代码如下:

# -*-coding:utf-8-*-
# 众数
def get_mode(arr):
mode = [];
arr_appear = dict((a, arr.count(a)) for a in arr); # 统计各个元素出现的次数
if max(arr_appear.values()) == 1: # 如果最大的出现为1
return; # 则没有众数
else:
for k, v in arr_appear.items(): # 否则,出现次数最大的数字,就是众数
if v == max(arr_appear.values()):
mode.append(k);
return mode;

arr = [1, 2, 3, 2, 3, 1, 4];
print get_mode(arr);

运行的结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: