Guest User

Untitled

a guest
Nov 21st, 2017
494
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. [("MLGuy42", "[email protected]", "123-4567"),
  2. ("CS229DungeonMaster", "123-4567", "[email protected]"),
  3.  
  4. [[0, 1, 3], [2]]
  5.  
  6. def find_duplicates(user_info):
  7. results = list()
  8. seen = dict()
  9. for i, user in enumerate(user_info):
  10. first_seen = True
  11. key_info = None
  12. for info in user:
  13. if info in seen:
  14. first_seen = False
  15. key_info = info
  16. break
  17. if first_seen:
  18. results.append([i])
  19. pos = len(results) - 1
  20. else:
  21. index = seen[key_info]
  22. results[index].append(i)
  23. pos = index
  24. for info in user:
  25. seen[info] = pos
  26. return results
  27.  
  28. def find_duplicates(user_info):
  29. results = list()
  30. seen = dict()
  31. for i, user in enumerate(user_info):
  32. for info in user:
  33. if info in seen:
  34. index = seen[info]
  35. results[index].append(i)
  36. pos = index
  37. break
  38. else:
  39. results.append([i])
  40. pos = len(results) - 1
  41. for info in user:
  42. seen[info] = pos
  43. return results
  44.  
  45. from random import randrange
  46. from timeit import timeit
  47. MAXVALUE = 1000
  48.  
  49. for a in range(5): #I wanted to make sure I checked 5 to make sure I don't get a outlier data set that effects my ability to use timeit reasonably.
  50. user_info = [[randrange(MAXVALUE) for i in range(3)] for _ in range(1000)]
  51. print(timeit(lambda: find_duplicates(user_info), number=10000))
Add Comment
Please, Sign In to add comment