Как в Python создать листы из объектов в листе на основе регулярного выражения, применяемого к определенной переменной данных объектов? Имеется класс Course с переменной section. Переменная section представляет из себя обычную строку вида . Например, 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

21 Авг 2019 в 07:01
177 +1
0
Ответы
1

Вы можете использовать функцию re.findall() для применения регулярного выражения к переменной section каждого объекта в листе inlist. Затем вы можете создать словарь defaultdict для разделения объектов на подлисты в зависимости от найденных сокращений. Ниже приведен пример кода:

import re
from collections import defaultdict
reg = re.compile('(?:\d+)([a-zA-Z]+)')
# пример класса Course
class Course:
def __init__(self, section):
self.section = section
# пример листа inlist
inlist = [Course('2R'), Course('3L'), Course('1R'), Course('4R'), Course('2L')]
# применяем регулярное выражение к переменной section и создаем подлисты на основе сокращений
result = defaultdict(list)
for obj in inlist:
abbreviation = re.findall(reg, obj.section)[0]
result[abbreviation].append(obj)
inlist = list(result.values())
# печать результатов
for sublist in inlist:
print([obj.section for obj in sublist])

Этот код разделит объекты в листе inlist на подлисты в зависимости от сокращения в переменной section каждого объекта. Результаты будут распечатаны для каждого подлиста. Вы можете адаптировать этот код под ваш конкретный случай использования.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир