Вот один из способов сделать то, что вы хотите:
>>> ", ".join(sorted('Apples, Bananas, Grapes, Oranges'.split(", ") +
... ["Cherries"]))
'Apples, Bananas, Cherries, Grapes, Oranges'
и «при сохранении идентификаторов»:
>>> ", ".join(sorted('1:Apples, 4:Bananas, 6:Grapes, 23:Oranges'.split(", ") +
... ["62:Cherries"], key=lambda x: x.split(":")[1]))
'1:Apples, 4:Bananas, 62:Cherries, 6:Grapes, 23:Oranges'
Я намеренно игнорирую ту часть вопроса, где вы задали вопрос о «наиболее эффективном» способе сделать что-то. Доказательство того, что алгоритм является наиболее эффективным из возможных подходов к конкретной проблеме, является нерешенной проблемой информатики. Это может быть невозможно вообще, и, конечно, для этого нет современных методов.
Однако, если вас беспокоит эффективность, вам следует хранить промежуточные структуры данных, а не выполнять такие операции со строками; любая строковая операция будет тратить кучу времени на копирование памяти; вы должны преобразовывать в и из строк только после того, как вся ваша обработка завершена.