代码示例
```Python3
from random import choice
from collections import defaultdict
from itertools import groupby
class Instance:
def __init__(self, num) -> None:
self.num = num
arr = list(range(4))
instances = [Instance(choice(arr)) for _ in range(10)]
print("values ", [instance.num for instance in instances])
# values [3, 2, 3, 2, 3, 1, 3, 1, 3, 2]
# use defaultdict
pair1 = defaultdict(list)
for instance in instances:
pair1[instance.num].append(instance)
# use groupby # wrong! need to sort by num first
groups = groupby(instances, lambda instance: instance.num)
pair2 = {x: list(g) for x, g in groups}
assert pair1 != pair2 # also probably equal
# use groupby # wrong! need to sort by num first
instances.sort(key=lambda instance: instance.num)
groups2 = groupby(instances, lambda instance: instance.num)
pair3 = {x: list(g) for x, g in groups2}
assert pair1 == pair3
```