@ac130kz

Как в Python создать листы из объектов в листе на основе регулярного выражения, применяемого к определенной переменной данных объектов?

Имеется класс Course с переменной section. Переменная section представляет из себя обычную строку вида <число><сокращение, пример: L, Lb, R>. Например, 2R. По сокращению и нужно разделить лист на подлисты R, L, и т.д. (кол-во сокращений не задано).

Регулярное выражение:
reg = re.compile('(?:\d+)([a-zA-Z]+)')

Для примера: перед тем как провести данное действие, я формирую подлисты на основе другой переменной abbr с помощью defaultdict:
result = defaultdict(list)
for obj in inlist:
    result[obj.abbr].append(obj)
inlist = list(result.values())

Вопрос состоит в том, чтобы созданные листы в общем листе inlist разделить на подлисты еще раз, но уже на основе регулярного выражения, указанного выше, и к переменной section
  • Вопрос задан
  • 644 просмотра
Решения вопроса 1
longclaps
@longclaps
Очень хороший вопрос, люблю такие. Что, к чему - хрен поймёшь. Сразу видно - топикстартер очень умный.
Имеется класс Course с переменной section - что за переменная у класса? Ладно, допустим что это - поле экзампляра.
...представляет из себя обычную строку... Например, 2R - наши строки умеют обходиться без кавычек.
Регулярное выражение:... - очень хорошее выражение, без дураков.
...листы в общем листе разделить на подлисты еще раз... - так надо плоско делить или вложенно?
...разделить на основе регулярного выражения - переведи?

По-русски этот вопрос о следующем: есть куча объектов, каждый с атрибутами: .abbr - неважно что, .section - вида "2R"
Нужно сгруппировать объекты по признаку (.abbr, суффикс(.section))
Решение очевидно:
for obj in inlist:
    result[obj.abbr, суффикс(.section)].append(obj) # это если без вложенности

Пеши ещё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы