fork(1) download
  1. from __future__ import print_function
  2. from timeit import timeit
  3. from random import choice
  4. from string import printable
  5. from collections import Counter, defaultdict
  6.  
  7. def default_dict(input_num, defaultdict=defaultdict):
  8. y = defaultdict(list)
  9. for count, s in map(lambda x: (input_num.count(x), x), set(input_num)):
  10. y[count].append(s)
  11. return y
  12.  
  13. def counter(input_num, defaultdict=defaultdict, Counter=Counter):
  14. x = Counter(input_num)
  15. y = defaultdict(list)
  16. for s, count in x.items():
  17. y[count].append(s)
  18. return y
  19.  
  20. test = ''.join([choice(printable) for _ in range(10000)])
  21. number = 1000
  22.  
  23. print('str.count:', timeit('f(t)', 'from __main__ import default_dict as f, test as t', number=number))
  24. print('Counter: ', timeit('f(t)', 'from __main__ import counter as f, test as t', number=number))
  25.  
Success #stdin #stdout 0.97s 13112KB
stdin
Standard input is empty
stdout
str.count: 0.5584823219978716
Counter:   0.3875599470047746