兩種方法:
- from collections import Counter
- 一一列舉
舉例:
l = [1,3,4,7,3,2,6,9,5,0,3,6,1,6,3,8,6,7,2,5]
#item_id_list: 12萬
def counter(item_id_list):
return Counter(item_id_list)
def count(item_id_list):
dict_item = {}
for item in item_id_list:
dict_item[item] = dict_item.get(item, 0) + 1
return dict_item
s = item_id_list[:20]
t1= timeit.Timer('counter(s)', 'from __main__ import counter, s')
t2 = timeit.Timer('count(s)', 'from __main__ import count, s')
print(t1.timeit(number=1000))
print(t2.timeit(number=1000))
len(list) | 20 | 200 | 2000 | 20000 |
---|---|---|---|---|
Counter | 0.01318 | 0.02240 | 0.11282 | 1.0403 |
一一列舉 | 0.01370 | 0.03722 | 0.29194 | 2.7899 |
結論:元素個數越多,collections.Counter統計元素個數所需時間越少