Как предотвратить ведущие нули после преобразования в целое число с помощью Python - PullRequest
0 голосов
/ 25 января 2019

Я хочу отсортировать список численно

s = [['92', '022'],['82','12'],['77','13']]

, поэтому я использовал

s = [list( map(int,i) ) for i in s]     

s.sort()

и вывод пришел

[[77, 13],[82, 12],[92, 22]] 

Но я хочу сохранить это22 как есть, т. Е. «022», поэтому мой вопрос состоит в том, как предотвратить этот начальный ноль!

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Идея функции key: преобразовать значения в ключ сортировки.Итак:

def sort_key(val):
    return list(map(int, val)) 

s.sort(key=sort_key)
# [['77', '13'], ['82', '12'], ['92', '022']]

должно быть ближе всего к вашей попытке логики.

0 голосов
/ 25 января 2019

Вместо этого вы можете использовать sorted со следующим key, чтобы избежать преобразования действительных значений с помощью понимания списка:

sorted(l, key = lambda x: int(x[0]))
[['77', '13'], ['82', '12'], ['92', '022']]

Вы также можете использовать operators.itemgetter, как предложено @aws_apprentice:

sorted(l, key = lambda x: int(itemgetter(0)(x)))
[['77', '13'], ['82', '12'], ['92', '022']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...