У меня есть этот список:
list = (('',''),('1','products'),('3','test'),('2','person'))
Когда я использую sorted(list)
, это дает мне
`list = (('',''),('1','products'),('2','person'),('3','test'))`
Я хотел бы сохранить этот порядок, но просто поставив пустые значения в конце, например:
list = (('1','products'),('2','person'),('3','test'),('',''))
Избегайте называть переменные «списком» — это конфликтует со встроенной функцией Python. Следует избегать названий зарезервированных слов и встроенных команд. Если у вас когда-нибудь возникнут сомнения относительно того, зарезервировано ли что-то, воспользуйтесь подсказками здесь, чтобы разобраться в этом.
И лучше не называйте его list
, если это не список, а кортеж.
Используйте функцию key
, которая добавляет элемент в начало кортежа, указывающий, есть ли в исходном кортеже пустой первый элемент.
my_list = (('',''),('1','products'),('3','test'),('2','person'))
sorted(my_list, key=lambda x: (x[0] == '', *x))
Результат:
[('1', 'products'), ('2', 'person'), ('3', 'test'), ('', '')]
Это звучит не слишком сложно, есть ли у вас попытки?