#python #algorithm
#python #алгоритм
Вопрос:
У меня есть шаблон данных:
templ: [
lots: [
lot: [
name: none
objs: [
obj: [
code: none
]
]
]
]
]
И лента данных, таких как: lot obj lot obj obj lot obj lot obj obj
.
Идея следующая. Мне нужно определить структуру данных результата по ленточным данным.
lot obj
— много с одним объектом
lot obj obj
— лот с двумя объектами
и так далее. Итак, из: lot obj
Результат должен совпадать с исходными данными:
lots: [
lot: [
name: none
objs: [
obj: [
code: none
]
]
]
]
От:
lot obj obj
это должно быть:
lots: [
lot: [
name: none
objs: [
obj: [
code: none
]
obj: [
code: none
]
]
]
]
От:
lot obj lot obj obj lot obj lot obj obj
должно быть:
lots: [
lot: [
name: none
objs: [
obj: [
code: none
]
]
]
lot: [
name: none
objs: [
obj: [
code: none
]
obj: [
code: none
]
]
]
lot: [
name: none
objs: [
obj: [
code: none
]
]
]
lot: [
name: none
objs: [
obj: [
code: none
]
obj: [
code: none
]
]
]
]
Я даю структуру данных в псевдокоде, потому что я не уверен, какую правильную структуру данных мне следует использовать.
Ответ №1:
Вы могли бы использовать str.split('lot')
и list.count('obj')
для определения количества объектов в каждой партии:
txt = 'lot obj lot obj obj lot obj lot obj obj'
lot_counts = [lot.count('obj') for lot in txt.split('lot')[1:]]
# [1, 2, 1, 2]
lots = [{'name': None, 'objs': [{'code': None} for _ in range(lot_count)]} for lot_count in lot_counts]
# [{'name': None, 'objs': [{'code': None}]},
# {'name': None, 'objs': [{'code': None}, {'code': None}]},
# {'name': None, 'objs': [{'code': None}]},
# {'name': None, 'objs': [{'code': None}, {'code': None}]}]
О вашем замечании «Я даю структуру данных в псевдокоде, потому что я не уверен, какую правильную структуру данных мне следует использовать».:
Я не могу помочь вам определить, какую структуру данных использовать, поскольку ваш вопрос не дает контекста, для чего это нужно.
Комментарии:
1. Мне нужно сгенерировать структуру по именам, которые я получаю из ввода в виде списка строк.
2. Можете ли вы привести пример ввода? Кроме того, для чего эти структуры будут использоваться после их создания?