Как в 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
148 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 416 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир