def max_all(iterable, *, key):
    it = iter(iterable)
    max_values = [next(it)]
    max_key = key(max_values[0])

    for x in it:
        x_key = key(x)

        if x_key > max_key:
            max_values = [x]
            max_key = x_key
        elif x_key == max_key:
            max_values.append(x)

    return max_values
    
    
d = {'x1': 2, 'x2': 2}
print(max_all(d, key=d.get))