您的位置:首页 > 编程语言 > Python开发

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

2017-12-28 09:52 736 查看
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)

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: