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
]
]
]
]
我用伪代码给出数据结构,因为我不确定我应该使用什么合适的数据结构。
解决方案
您可以使用str.split('lot')
andlist.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}]}]
关于您的评论“我用伪代码给出数据结构,因为我不确定我应该使用什么合适的数据结构。”:
我无法帮助您弄清楚要使用什么数据结构,因为您的问题没有给出上下文是什么。
推荐阅读
- python - 尝试将 urls.py 设置为指向 index.html
- python - 如何从网站上抓取数据并在 R 中以指定格式写入 csv?
- php - SecurityError:阻止了一个带有原点的帧
- emacs - Elisp use apply on progn for list of functions
- python - Unable to use if statement before for loop in List Comprehension
- javascript - 数据表手动填充数据
- vue.js - Bootstrap Vue - make Dropdown List readonly
- rust - How do I avoid allocations in Iterator::flat_map?
- python - Print out objects stored in a list
- json - 映射后我只想访问数组的一项