在《【Python】利用setdefault函数实现dict的转置(key与value对互换),统计value出现的次数》(点击打开链接)中介绍过,如何统计dict中相同value的key的出现次数。本文介绍如何利用list自带的count函数,来统计list中每个元素出现的次数。
具体代码如下:
arr_appear=dict((a,arr.count(a)) for a in arr);
如下代码:
# -*-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);