选择列表的随机模式

时间:2016-02-12 19:09:48

标签: python python-3.x random statistics

我有数据,我想通过列表的模式进行总结。当有多个模式时,我想随机选择模式。据我了解,在具有多种模式的列表中,scipy和统计模式函数分别返回第一种模式并引发异常。我已经完成了自己的功能(如下所示),但我想知道是否有更好的方法。

import random

def get_mode(l):
    s = set(l)
    max_count = max([l.count(x) for x in s])
    modes = [x for x in s if l.count(x) == max_count]
    return random.choice(modes)

1 个答案:

答案 0 :(得分:1)

You can use Counter to do this:

from collections import Counter
from random import choice


def get_mode(l):
    c = Counter(l)
    max_count = max(c.values())
    return choice([k for k in c if c[k] == max_count])