fork download
  1. data = []
  2. for i in range(1000):
  3. data.append([f'Antônio{i}', '01/01/2020', 'Faltou'])
  4. data.append([f'Antônio{i}', '15/01/2020', 'Remarcou'])
  5. data.append([f'Fulano{i}', '15/01/2020', 'Faltou'])
  6. data.append([f'Fulano{i}', '20/01/2020', 'Remarcou'])
  7. data.append([f'Beltrano{i}', '15/01/2020', 'Faltou'])
  8. data.append([f'Beltrano{i}', '02/02/2020', 'Faltou'])
  9. data.append([f'Beltrano{i}', '10/11/2021', 'Compareceu'])
  10.  
  11.  
  12. from timeit import timeit
  13.  
  14. def com_listas():
  15. resultado = []
  16. for i in data:
  17. nomes = [n[0] for n in resultado]
  18. if i[0] not in nomes:
  19. resultado.append([i[0], i[1], i[2]])
  20. else:
  21. for j in resultado:
  22. if i[0] == j[0]:
  23. j.append(i[1])
  24. j.append(i[2])
  25.  
  26. def com_dicionario():
  27. resultado = {}
  28. for nome, dt, acao in data:
  29. resultado.setdefault(nome, [nome]).extend([dt, acao])
  30. resultado = list(resultado.values())
  31.  
  32.  
  33. # executa 1 vez cada teste
  34. params = { 'number' : 1, 'globals': globals() }
  35. # imprime os tempos em segundos
  36. print(timeit('com_listas()', **params))
  37. print(timeit('com_dicionario()', **params))
  38.  
Success #stdin #stdout 1.15s 11844KB
stdin
Standard input is empty
stdout
1.1201417818665504
0.002172328531742096