在元组列表中查找多个模式 - python

时间:2014-01-10 02:59:43

标签: python tuples mode median

我是python中的新手,需要一些帮助才能找到元组的模式。但是,我现在的代码只显示一种模式,我需要更改以显示多种模式(如果数字列表超过1)

    import itertools
    import operator

    def mode_function2(lst):
       return max(set(lst), key=lst.count)

2 个答案:

答案 0 :(得分:4)

这有效:

from collections import Counter
def mode_function2(lst):
    counter = Counter(lst)
    _,val = counter.most_common(1)[0]
    return [x for x,y in counter.items() if y == val]

以下是演示:

>>> mode_function2([1, 2, 2])
[2]
>>> mode_function2([1, 2, 2, 1])
[1, 2]
>>> mode_function2([1, 2, 3])
[1, 2, 3]
>>>

这里的重要概念是:

答案 1 :(得分:0)

这是你想要的吗?

def mode_function2(lst, multiplicity = False):
    maxFreq =  max(map(lst.count, lst))
    modes = [i for i in lst if lst.count(i) == maxFreq]
    return modes if multiplicity else set(modes)