Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2013 14:32:36

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

чуть подкорректирую задание:
есть некая строка “SHR16,WTS1234, ACDW14, WTS16, WTS72, ACDW485, SHR728”
есть некий шаблон(он может изменяться): “WTS, ACDW, SHR”
Нужно отсортировать исходную строку в зависимости от того, какой шаблон.
Т.е., в результате должно получиться:
“WTS16, WTS72, WTS1234, ACDW14, ACDW485, SHR16, SHR728 ”

Офлайн

#2 Янв. 9, 2013 16:31:46

sank
Зарегистрирован: 2012-10-05
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

import re
str = 'SHR16,WTS1234, ACDW14, WTS16, WTS72, ACDW485, SHR728' # исходная строка
order = ['WTS', 'ACDW', 'SHR'] # порядок сортировки
order = order + [re.sub('\d', '', s.strip()) for s in str.split(',')] # страхуемся от эксепшенов - это на ваш вкус
# собственно сортировка
print(', '.join(sorted([s.strip() for s in str.split(',')], cmp=lambda x,y: cmp('%09d-%09d' % (order.index(re.sub('\d', '', x)), int(re.sub('\D', '', x))), '%09d-%09d' % (order.index(re.sub('\d', '', y)), int(re.sub('\D', '', y)))))))

Офлайн

#3 Янв. 9, 2013 17:04:53

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Помогите отсортировать

Не прошло и 4х страниц и мы узнали правильное тз, ура. На сортироку с шаблоном думаю пост #9 почитаемее будет. Хотя тс может возмутиться, что в примерах шаблоны- кортеж/список, а у него- нет!

Офлайн

#4 Янв. 9, 2013 19:32:32

Eva_777
Зарегистрирован: 2013-01-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отсортировать

sank, спасибо огромное)
вы-просто волшебник)

Офлайн

#5 Янв. 10, 2013 00:01:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите отсортировать

sergeek
придется добавлять этого руками(если вообще заранее известно что добавлять). Если же она именно такая, тогда уже проще будет написать
руками ничего не добавляется
к prefs подключается генератор, который выдаёт строки, а генератор уже берёт их откуда угодно

а если там именно нужно выбрать уникальные слова по порядку, как pyuser предположил, то их надо сначала выбрать (только нормальным кодом) и точно так же подключить к prefs (а не вставлять в цикл, нарушая его читаемость и сковывая программу)

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



Отредактировано py.user.next (Янв. 10, 2013 00:03:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version