Сортировка строкового списка с числами по числам - PullRequest
0 голосов
/ 02 августа 2020

У меня есть список, который выглядит так:

mylist = ['item_11', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_none']

Я хочу отсортировать его по числам, но начиная с «item_none», поэтому результат будет выглядеть так:

['item_none', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_11']

Я нашел способ, который работает для меня, но он использует два понимания списка для переименования «item_none» в «item_-1» и обратно. Мне было интересно, есть ли более элегантный способ сделать это? Спасибо за любые предложения.

newlist = ['item_-1' if 'none' in x else x for x in mylist]
newlist.sort(key=lambda x: int(x.split('_')[-1]))
finallist = ['item_none' if '-1' in x else x for x in newlist]

1 Ответ

2 голосов
/ 02 августа 2020

Вы можете установить ключ на -1, если none есть в списке

In [8]: mylist = ['item_11', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_none']

In [9]: mylist.sort(key=lambda x: -1 if x.split("_")[-1] == "none" else int(x.split('_')[-1]))

In [10]: mylist
Out[10]: ['item_none', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_11']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...