def ordered(somelist, wantedorder, keyfunction):
    orderdict = dict((y, x) for x, y in enumerate(wantedorder))
later = len(orderdict)

def key(item):
    return orderdict.get(keyfunction(item), later)
return sorted(somelist, key=key)
произвольное переупорядочивание списка диктов в python