python - 在 Python 中对嵌套属性列表进行分组
问题描述
我有一个清单
lst = ['orb|2|3|4', 'obx|2|3|4', 'orb|2|3|4', 'obx|1|2|3', 'obx|1|2|3','obx|1|2|3']
我怎样才能按前三行对列表进行分组,以便最终变成这样。分组发生在该行的三个字符上。如果该行以“orb”开头,则后续行将添加到以该行开头的列表中。感谢你的回答。
result = [['orb|2|3|4', 'obx|2|3|4'], ['orb|2|3|4', 'obx|1|2|3', 'obx|1|2|3','obx|1|2|3']]
解决方案
这是一个O(N)
复杂的算法:
res = []
tmp = []
for x in lst:
if x.startswith('orb'):
if tmp:
res.append(tmp)
tmp = [x]
elif tmp:
tmp.append(x)
res.append(tmp)
结果:
In [133]: res
Out[133]:
[['orb|2|3|4', 'obx|2|3|4'],
['orb|2|3|4', 'obx|1|2|3', 'obx|1|2|3', 'obx|1|2|3']]