Как уже отмечали другие, сравнение строк - это вопрос лексикографического упорядочения.
Что это означает процедурно:
- две строки сравниваются по одному символу за раз
- первый отличающийся символ решает, какая строка «больше» другого
- , если никакие символы не отличаются и строки одинаковой длины, они «равны».
- если два символа различны, их «порядковое значение» решает, что «больше»
- символ «больше», чем «нет символа»
Например, 'ab' > 'a'
равно True
, потому что 'a' == 'a'
, но первая строка имеет дополнительный символ.И 'abc' < 'abd'
потому что 'c' < 'd'
.
'a' < 'b'
потому что ord('a') < ord('b')
.Порядковый номер символа обычно является его значением ASCII для нормальных символов или, точнее, его кодовой точкой Unicode (https://docs.python.org/3/library/functions.html#ord).. Это также означает, что 'A' < 'a'
, потому что заглавные буквы идут перед строчными в Unicode. И'1' < 'A'
потому что цифры идут перед буквами.
Обратите внимание, что иногда это может дать неожиданные результаты (обратите внимание на точки на Ӓ
):
>>> 'Ӓ' > 'a'
True
>>> 'A' > 'a'
False
Существует много онлайн-таблиц и обзоров.Unicode, но вот довольно простой пример: https://www.tamasoft.co.jp/en/general-info/unicode.html
Что касается вашего примера:
>>> '18:00 - asdfj' > '16:30 - asdfj'
True
Это имеет смысл, потому что '8' > '6'
- остальная часть строки невопрос.