Сортировка списка строк, игнорирование порядковых значений ASCII - PullRequest
0 голосов
/ 16 декабря 2011

Я хочу отсортировать этот список:

>>> L = ['A', 'B', 'C', ... 'Z', 'AA', 'AB', 'AC', ... 'AZ', 'BA' ...]

Точно так, как оно есть, независимо от содержимого (при условии, что все CAPS альфа).

>>> L.sort()
>>> L
['A', 'AA', 'AB', 'AC'...]

Как я могу сделать это:

>>> L.parkinglot_sort()
>>> L
['A', 'B', 'C', ... ]

Я думал о проверке длины, сортировке каждой длины и объединении всех отдельных элементов 1-длины, 2-длины, n-длины L в новый L.

Спасибо!

1 Ответ

6 голосов
/ 16 декабря 2011

Как насчет этого?

l.sort(key=lambda element: (len(element), element))

Он будет сортировать список с учетом не только каждого элемента, но и его длины.

>>> l = ['A', 'AA', 'B', 'BB', 'C', 'CC']
>>> l.sort(key=lambda element: (len(element), element))
>>> print l
['A', 'B', 'C', 'AA', 'BB', 'CC']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...