Можно ли оптимизировать сортировку списка?

Мой код получает список, состоящий из нескольких кортежей. Кортежи содержат в себе по две строки. Первая строка представляет из себя какое-либо слово, а вторая номер этого слова. В качестве примера такого списка выступает label_info:

label_info = [('label', '2'),
              ('text', '1'),
              ('string', '3')]

label_info располагает кортежи в хаотичном порядке, игнорируя номера слов внутри этих кортежей. Мне необходимо это исправить и расположить кортежи внутри списка по принципу возрастания номера слова:

label_info = [('text', '1'),
              ('label', '2'),
              ('string', '3')]

Я сделал алгоритм сортировки label_info. Он работает, но показался мне слишком большим. Возникает чувство, что все можно сделать намного проще, но я не знаю как. Заменить список кортежей на простой словарь я не могу. Пожалуйста, подскажите, можно ли оптимизировать сортировку списка?

label_info = [('label', '2'),
              ('text', '1'),
              ('string', '3')]

numbers = []

for label in label_info:
    numbers.append(int(label[1]))
numbers.sort()

label_info_2 = []

for number in numbers:
    for label in label_info:
        if label[1] == str(number):
            label_info_2.append(label)

print(label_info_2)

Ответы (1 шт):

Автор решения: timur

Можно воспользоваться стандартной функцией сортировки sorted:

label_info_2 = sorted(label_info, key = lambda i: int(i[1]))

print(label_info_2)
# [('text', '1'), ('label', '2'), ('string', '3')]
→ Ссылка