我有一个单一的列表,例如:
flat = ['1', '1-1', '1-1-1', '1-2', '2', '2-1', '2-2', '3']
我需要转换为嵌套列表,其中每个级别(短划线后跟一个数字)都会启动一个新的子列表,例如:
result = ['1', ['1-1', ['1-1-1'], '1-2'], '2', ['2-1', '2-2'], '3']
有关如何在Python中执行此操作的任何提示吗?
答案 0 :(得分:4)
def nested(flat, level=0):
for k, it in itertools.groupby(flat, lambda x: x.split("-")[level]):
yield next(it)
remainder = list(nested(it, level + 1))
if remainder:
yield remainder
示例:
>>> list(nested(flat, 0))
['1', ['1-1', ['1-1-1'], '1-2'], '2', ['2-1', '2-2'], '3']