Не уверен, правильно ли я понимаю, но вот необработанное решение, которое вы могли бы адаптировать:
from collections import defaultdict
input = [(1.2,2), (1.2, 6), (1.2, -2), (2,8), (2,7), (2,18)]
indices_dict = defaultdict(lambda: list([[], []]))
for idx, val in enumerate(input):
indices_dict[val[0]][0].append(idx)
indices_dict[val[0]][1].append(val[1])
for key in indices_dict:
y_values = indices_dict[key][1]
idx_values = indices_dict[key][0]
max_idx = idx_values[y_values.index(max(y_values))]
min_idx = idx_values[y_values.index(min(y_values))]
print 'Max diff for x=%s is found between points %s and %s' %(key, input[min_idx], input[max_idx])
Это должно напечатать для каждого отдельного x точки, которые имеют максимальную разницу по y.Вы можете адаптировать его к вашим требованиям.