旧的列表格式如下:
['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
它应该被转换为:
['Item 1', ['Item 1.1', 'Item 1.2']]
这个问题来自Django的源代码,但我无法搞清楚。谢谢。
答案 0 :(得分:1)
#!/usr/bin/python
import itertools
l = ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
def con(L):
res = []
for x in l:
if isinstance(x, list):
temp = list(itertools.chain(*x))
res.extend(temp)
else:
res.append(x)
return [x for x in res if x]
if __name__ == "__main__":
print(con(l))
输出是:
['Item 1', 'Item 1.1', 'Item 1.2']
答案 1 :(得分:0)
喜欢这个吗?
test = ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
def convert(oldlist):
return [oldlist[0], [oldlist[1][0][0], oldlist[1][1][0]]]
print(convert(test))
输出是:
['Item 1', ['Item 1.1', 'Item 1.2']]
答案 2 :(得分:0)
另一种选择......这也会保留您要求的格式,并且可以使用任意数量的子项,但由于我缺少一个更复杂的子项的示例,我不知道它是否将持有真实数据......你必须检查!
test = ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
def convert(oldlist, newlist):
for i in range(len(oldlist)):
if type(oldlist[i]) == list and type(oldlist[i][0]) != list:
newlist.append(oldlist[i][0])
elif type(oldlist[i]) != list:
newlist.append(oldlist[i])
else:
newlist.append([])
convert(oldlist[i], newlist[-1])
return newlist
print(convert(test, []))
输出是:
['Item 1', ['Item 1.1', 'Item 1.2']]