function k_nearest_neighbors(x, training_data, k):

   distances = [(distance(x, point), label) for point, label in training_data]
   distances.sort_by(distance_value)
   nearest = distances[:k]
   return majority_vote([label for _, label in nearest])
