Найти - Пользователи
Полная версия: Сортировка циферно-символьных значений
Начало » Python для новичков » Сортировка циферно-символьных значений
1 2
PooH
Пока нашел время ответить, уже сделали, но не пропадать же:
# -*- encoding: utf-8 -*-
import re

ls = [u'57А', u'51', u'1', u'1/9', u'12', u'14', u'15', u'15 к2', u'18',
'19', u'2/4', u'22', u'22А', u'23', u'24', u'25', u'25 к2', u'26',
'28', u'3', u'32', u'36/34', u'37', u'38', u'40', u'41', u'42', u'43', u'44',
u'45/7 к2', u'45/7', u'46', u'47/8', u'48/7', u'49', u'53А', u'55',
'59', u'59А', u'6/3', u'7/9', u'72', u'8/6', u'80', u'82']

class SortHash:
RE = re.compile(r'(\d+)|([^\d\s\/]+)')

def __call__(self, s):

def adjust(s):
try:
return int(s)
except ValueError:
return s

return tuple(adjust(x.group()) for x in self.RE.finditer(s.upper()))

for x in sorted(ls, key=SortHash()):
print x
pochechyev
to PooH:
Спасибо. :)

Все оказалось достаточно просто. Но я не понимаю как работает функция sort() и не знал что значение key может быть функция которая возвращает список.

Был бы крайне благодарен за ссылку на подробное описание работы функции sort(), в инете нормального описания найти не смог.
o7412369815963
pochechyev
Был бы крайне благодарен за ссылку на подробное описание работы функции sort(), в инете нормального описания найти не смог.
Сортировка и группировка списков в python (groupby, sorted)
o7412369815963
и тут есть пример в конце статьи
pochechyev
Спасибо за ссылки, но я говорил о другом.

Меня интересует сам принцип работы функции sort, а в статьях, ссылки на которые Вы дали, об этом ничего не нет. Да и статьи больше похожи на перевод офф. документации.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB