python 获得列表中每个元素出现次数的最快方法

Posted 安阳小栈-客官歇会吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 获得列表中每个元素出现次数的最快方法相关的知识,希望对你有一定的参考价值。

import collections
import numpy as np
import random
import time


def list_to_dict(lst):
    dic = {}
    for i in lst:
        dic[i] = lst.count(i)
    return dic


def collect(lst):
    return dict(collections.Counter(lst))


def unique(lst):
    return dict(zip(*np.unique(lst, return_counts=True)))


def generate_data(num=1000000):
    return np.random.randint(num / 10, size=num)


if __name__ == "__main__":
    t1 = time.time()
    lst = list(generate_data())
    t2 = time.time()
    print("generate_data took : %sms" % (t2 - t1))  # 本机实测0.12ms

    t1 = t2
    d1 = unique(lst)
    t2 = time.time()
    print("unique took : %sms" % (t2 - t1))  # 本机实测0.42ms

    t1 = t2
    d2 = collect(lst)
    t2 = time.time()
    print("collect took : %sms" % (t2 - t1))  # 本机实测1.25ms

    t1 = t2
    d3 = list_to_dict(lst)
    t2 = time.time()
    print("list_to_dict took : %sms" % (t2 - t1))  # 本机实测...太慢了测不下去了

    assert(d1 == d2)
    assert(d1 == d3)

 

以上是关于python 获得列表中每个元素出现次数的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

python学习--统计序列中元素出现的频度(次数)

python 如何统计dataframe中某一列数据中每个元素出现的次数

如何计算熊猫系列列表中每个元素的出现次数?

python列表(list)中出现次数最多的元素使用collection包的Counter方法

Python实用黑科技——找出序列里面出现次数最多的元素

python返回一个列表中出现次数最多的元素