keyed_a = ((n.real, n) for n in a)
keyed_b = ((n.imag, n) for n in b)
from itertools import chain
sorted_ab = zip(*sorted(chain(keyed_a, keyed_b), key=lambda t: t[0]))[1]
sorted_ab
Перебрать пару итераций, отсортированных по атрибуту