我有未知數量的串列,例如看起來像這樣:
local first = {"ship", "truck"}
local second = {"container", "crate"}
local third = {"box", "bag", "case"}
local fourth = {"apple", "banana"}
我想建立一個表,其中每個串列中的每個專案都包含下一個串列中的所有內容,而下一個串列中的所有內容又包含下一個串列中的所有內容,等等......
但是,我不知道如何遞回地遍歷每個串列中的所有內容來構建我想要的結構。只需兩個串列就很容易做到:
local function do_it(list_1, list_2)
local toplevel = {}
for _, item_1 in pairs(list_1) do
toplevel[item_1] = {}
for _, item_2 in pairs(list_2) do
table.insert(toplevel[item_1], item_2)
end
end
return toplevel
end
退貨
truck:
1: container
2: crate
ship:
1: container
2: crate
我怎么會得到這樣的東西:
truck:
1: container
1: box
1: apple
2: banana
2: bag
1: apple
2: banana
3: case
1: apple
2: banana
2: container
1: box
1: apple
2: banana
2: bag
1: apple
2: banana
3: case
1: apple
2: banana
ship:
1: container
1: box
1: apple
2: banana
2: bag
1: apple
2: banana
3: case
1: apple
2: banana
2: container
1: box
1: apple
2: banana
2: bag
1: apple
2: banana
3: case
1: apple
2: banana
uj5u.com熱心網友回復:
使用 at 表保存索引為給定深度的所有值,我們可以這樣做:
local data = {{"ship", "truck"}, {"container", "crate"}, {"box", "bag", "case"}, {"apple", "banana"}}
local function do_it(list, depth)
local root = {}
for _, item in ipairs(list[depth]) do
root[item] = {}
print(string.rep("-",depth) .. item)
if depth 1 < #list then
root[item] = do_it(list, depth 1)
else
for _, v in ipairs(list[depth 1]) do
print(string.rep(" ",depth 1) .. v)
table.insert(root[item], v)
end
end
end
return root
end
do_it(data, 1)
-ship
--container
---box
apple
banana
---bag
apple
banana
---case
apple
banana
--crate
---box
apple
banana
---bag
apple
banana
---case
apple
banana
-truck
--container
---box
apple
banana
---bag
apple
banana
---case
apple
banana
--crate
---box
apple
banana
---bag
apple
banana
---case
apple
banana
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526851.html
標籤:列表字典递归lua
上一篇:python將串列串列轉換為字典
