Advertisement
Guest User

Untitled

a guest
Mar 11th, 2023
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.89 KB | None | 0 0
  1. from random import choice
  2. from collections import defaultdict
  3. from itertools import groupby
  4.  
  5.  
  6. class Instance:
  7.     def __init__(self, num) -> None:
  8.         self.num = num
  9.  
  10.  
  11. arr = list(range(4))
  12. instances = [Instance(choice(arr)) for _ in range(10)]
  13. print("values ", [instance.num for instance in instances])
  14. # values  [3, 2, 3, 2, 3, 1, 3, 1, 3, 2]
  15.  
  16. # use defaultdict
  17. pair1 = defaultdict(list)
  18. for instance in instances:
  19.     pair1[instance.num].append(instance)
  20.  
  21. # use groupby # wrong! need to sort by num first
  22. groups = groupby(instances, lambda instance: instance.num)
  23. pair2 = {x: list(g) for x, g in groups}
  24.  
  25. assert pair1 != pair2  # also probably equal
  26.  
  27. # use groupby # wrong! need to sort by num first
  28. instances.sort(key=lambda instance: instance.num)
  29. groups2 = groupby(instances, lambda instance: instance.num)
  30. pair3 = {x: list(g) for x, g in groups2}
  31.  
  32. assert pair1 == pair3
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement