Сопоставление двух списков и вывод блоками на основе количества значений в одном из них? Здравствуйте.
Думаю, что вопрос решается легче, чем я это придумал, но моя голова уже зациклилась и не находит другого выхода. Надеюсь, вы подскажете таковое.
Есть массив данных, представленных обычным текстом. В этом массиве представлены значения сразу нескольким сущностям. Сами эти сущности вынесены в отдельный список. Значения для каждой сущности идут блоками, разделенными пустой строкой. Пример ниже в коде. Количество значений на каждую сущность может различаться.dataset_names = ["moscow", "new-york"]
text = """2008 11 186
2009 11 281
2011 11 776
2012 11 856
2011 11 776
2012 11 856"""
def chunks(l, n=2):
"""Разбивает список (l) на части размером n"""
for i in range(0, len(l), n):
yield l[i:i + n]
prepare_text = text.replace(' ','').replace('\n','\t').split('\t\t')
data = [list(chunks(item.split('\t'))) for item in prepare_text]
Что я делаю сейчас: удаляю пробелы (они не воспринимаются в месте назначения), разбиваю на блоки, делю блоки по парам.
А дальше, как уже написал, мозги впадают в цикл и выходят в конечном счете на одно и то же решение, которое не дает желаемого результата. Вроде не трудно сопоставить оба списка и добавить в чанки имена датасетов, но как потом вытащить оттуда данные в нужном форматировании?
В конечном счете я хочу получить примерно следующее:
moscow
value_1 = 2008
value_2 = 11186
value_1 = 2009
value_2 = 11281
etc
new-york
value_1
value_2
value_1
value_2
etc
Проще говоря, хочу вывести к каждой сущности из одного списка все соответствующие ей значения из другого, дополнительно разбивая их по парам.
Направьте, пожалуйста, в нужную сторону.

21 Авг 2019 в 06:23
246 +2
0
Ответы
1

Вы можете использовать цикл for для сопоставления значений из списка dataset_names с данными из списка data и вывода их в нужном формате. Ниже приведен пример кода:

dataset_names = ["moscow", "new-york"]
text = """2008 11 186
2009 11 281
2011 11 776
2012 11 856
2011 11 776
2012 11 856"""
def chunks(l, n=2):
"""Разбивает список (l) на части размером n"""
for i in range(0, len(l), n):
yield l[i:i + n]
prepare_text = text.replace(' ', '').split('\n\n')
data = [list(chunks(item.split('\n'))) for item in prepare_text]
for i in range(len(dataset_names)):
print(dataset_names[i])
for item in data[i]:
for values in item:
value_1, value_2 = values.split()
print(f"value_1 = {value_1}")
print(f"value_2 = {value_2}")

Этот код будет выводить значения из списка data в формате, который вы указали, с указанием соответствующей сущности из списка dataset_names.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир