舊的列表格式看起來像:老式列表轉換爲新的更易於理解的格式
['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
而且它應該被轉換爲:
['Item 1', ['Item 1.1', 'Item 1.2']]
這個問題來自Django的烏爾斯河碼但我很難搞清楚。提前感謝。
舊的列表格式看起來像:老式列表轉換爲新的更易於理解的格式
['Item 1', [['Item 1.1', []], ['Item 1.2', []]]]
而且它應該被轉換爲:
['Item 1', ['Item 1.1', 'Item 1.2']]
這個問題來自Django的烏爾斯河碼但我很難搞清楚。提前感謝。
另一種選擇......這也將讓你要求的格式,並應與任意數量的子項的工作,但因爲我缺少一個例子有更復雜的子項目,我不知道它是否可以保留真實的數據......你必須檢查!
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']]
非常感謝。這真的有幫助。(對不起,我沒有足夠的權限來投票答覆) – Kzing
#!/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']
但是,這不是他要求的輸出... – Roberto
喜歡這個?
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']]
你可以給你在哪裏看到更多的上下文,你正在努力實現? – karthikr
第一段代碼不是一個列表 - 方括號的開始和結束方式不一致。 – alecxe
我從Django內置的模板過濾器中看到了這一點。現在我在轉換列表時遇到了麻煩,我嘗試了很多方法,包括recusion,但沒有任何幫助。 – Kzing