Сопоставить каждому ключу его желаемый приоритет:
key_precedence = dict((x, n) for n, x in enumerate(string_list))
Затем выполнить сортировку по приоритету:
object_list.sort(key=lambda x: key_precedence[x.key])
Для обработки ключей, которые могут отсутствовать в списке строк:
default = -1 # put "unknown" in front
default = sys.maxint # put "unknown" in back
object_list.sort(key=lambda x: key_precedence.get(x.key, default))
Если string_list короткий (например, 10 или меньше элементов), вы можете упростить:
object_list.sort(key=lambda x: string_list.index(x.key))
# But it's more cumbersome to handle defaults this way.
Однако это запрещено для больших длин string_list.