Можно ли оптимизировать сортировку списка?
Мой код получает список, состоящий из нескольких кортежей. Кортежи содержат в себе по две строки. Первая строка представляет из себя какое-либо слово, а вторая номер этого слова. В качестве примера такого списка выступает 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 шт):
Можно воспользоваться стандартной функцией сортировки sorted:
label_info_2 = sorted(label_info, key = lambda i: int(i[1]))
print(label_info_2)
# [('text', '1'), ('label', '2'), ('string', '3')]