Как Сортировать Подсписок, содержащий String и Int как строку - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно отсортировать список по целому числу в виде строки, а список также содержит алфавиты строк.

   li = [['dr','3','mn'],['fs','1','a'],['2','rt',c]]

Мне нужен вывод, например:

   li = [['fs','1','a'],['2','rt',c],['dr','3','mn']]

или

   li = [[1,'fs','a'],[2,'rt',c],[3,'dr','mn']]

в любом из этих форматов.

1 Ответ

1 голос
/ 04 июля 2019

Этот код предполагает, что числа являются целыми числами, и в каждом списке есть хотя бы одно число:

li = [['11','rt','c'],['dr','3','mn'],['fs','1','a'],['2','rt','c']]

def is_number(s):
    try:
        i = int(s)
        return True
    except ValueError:
        return False

print([li[i[-1]] for i in sorted([[int(j), ii] for ii, i in enumerate(li) for j in i if is_number(j)])])

Печать:

[['fs', '1', 'a'], ['2', 'rt', 'c'], ['dr', '3', 'mn'], ['11', 'rt', 'c']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...