Python-如何计算列表中元素的频率?

发布于 2021-02-02 23:20:50

我需要找到列表中元素的频率

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]

输出->

b = [4,4,2,1,2]

我也想从中删除重复项

a = [1,2,3,4,5]
关注者
0
被浏览
174
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    由于列表是有序的,你可以执行以下操作:

    a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
    from itertools import groupby
    [len(list(group)) for key, group in groupby(a)]
    

    输出:

    [4, 4, 2, 1, 2]
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在Python 2.7(或更高版本)中,你可以使用collections.Counter

    import collections
    a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
    counter=collections.Counter(a)
    print(counter)
    # Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
    print(counter.values())
    # [4, 4, 2, 1, 2]
    print(counter.keys())
    # [1, 2, 3, 4, 5]
    print(counter.most_common(3))
    # [(1, 4), (2, 4), (3, 2)]
    

    如果你使用的是Python 2.6或更早版本,则可以在此处下载。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看