Python

Почему неверно работает программа на python?

Программа
x = [input() for _ in range (3)]
x.sort()
print(x[0], x[2], sep="\n")
При входным данных
Москва
Санкт-Петербург
Екатеринбург
сортирует как ['Екатеринбург', 'Москва' 'Санкт-Петербург'], а должна ['Москва', 'Екатеринбург', 'Санкт-Петербург']
А что ты хотел? Сортируешь массив строк по алфавиту - вот и получаешь отсортированное по алфавиту. И чего бы это Москве оказаться раньше Екатеринбурга?

А хочешь, чтобы сортировало по длине, так и сортируй по длине:
 x.sort(key=len) 
BA
Berdi Aliyev
82 533
Лучший ответ
сортирует как ['Екатеринбург', 'Москва' 'Санкт-Петербург'], а должна ['Москва', 'Екатеринбург', 'Санкт-Петербург']
Что значит должна? Сортирует лексикографически, как обычно
Вы хотите сказать, что пытались сделать программу для языка программирования Python для сортировки данных, которые вы ей передали ранее? Но программа не работает так, как вы ожидали, поэтому вы просите помочь понять, почему это может быть? Если да, то я могу попытаться помочь вам с этим!
Klays Santo БРО РЕАЛЬНО ПРИГОТОВИЛ ОНЛИ ИН ОХАЙО
x = [input() for _ in range(3)]
x = sorted(x, key=str.lower)
print(x[0], x[1], x[2], sep="\n")
Проблема заключается в том, что метод sort() сортирует строки в лексикографическом порядке, то есть по алфавиту, а не по географическому порядку городов. Чтобы решить эту проблему, можно использовать функцию sorted() вместо метода sort(), а также задать ключ сортировки, который будет основан на географическом порядке городов.

Вот исправленный код:

 x = [input() for _ in range (3)] 
x = sorted(x, key=lambda city: {'Москва': 1, 'Екатеринбург': 2, 'Санкт-Петербург': 3}[city])
print(x[0], x[2], sep="\n")

Этот код использует лямбда-функцию в качестве ключа сортировки, которая сопоставляет каждому городу числовой индекс на основе его места в географическом порядке. Затем функция sorted() использует этот ключ для сортировки списка городов.
Бауыржан Нуржаев мне нужно чтобы список сортировался по длинне каждого элемента