fork download
  1. =============================== RESTART: Shell ===============================
  2. >>> import time
  3. >>> from contextlib import contextmanager
  4. >>> @contextmanager
  5. def get_time():
  6. start = time.time()
  7. yield
  8. end = time.time()
  9. print(end-start)
  10.  
  11.  
  12. >>> l = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
  13. >>> l = l * 10000
  14. >>>
  15. >>> from collections import defaultdict
  16. >>>
  17. >>> d = defaultdict(str)
  18. >>> with get_time():
  19. for k,v in l: d[k] += v
  20.  
  21.  
  22. 0.04916644096374512
  23. >>>
  24. >>> d = defaultdict(list)
  25. >>> with get_time():
  26. for k,v in l: d[k].append(v)
  27.  
  28.  
  29. 0.011052608489990234
  30. >>>
  31. >>> from itertools import groupby
  32. >>> with get_time():
  33. d = [(k, ''.join([item[1] for item in i])) for k,i in groupby(l, key=lambda x:x[0])]
  34.  
  35.  
  36. 0.01807713508605957
  37. >>>
  38. >>> with get_time():
  39. d = {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}
  40.  
  41.  
  42. 0.005514621734619141
  43. >>>
  44. >>>
  45. =============================== RESTART: Shell ===============================
  46. >>> l = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
  47. >>> for k,v in {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}.items(): print(k, ''.join(v))
  48.  
  49. id0 python
  50. id1 aiueo
  51. >>>
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty