我有一个嵌套表(两层)。我想做的是合并(展平?)子表,任何重复项都会溢出到新的键中。 所以输入看起来像
t = {
[1] = {
[1] = "One",
[3] = "Three"
},
[2] = {
[2] = "Two",
[3] = "Three"
},
[3] = {
[1] = "One",
[2] = "Two",
[4] = "Four"
}
}
输出看起来像
t = {
[1] = {
[1] = "One",
[2] = "Two",
[3] = "Three",
[4] = "Four"
}
[2] = {
[1] = "One",
[2] = "Two",
[3] = "Three"
}
}
输入表最多有 1000 个键,所以我希望它能够高效地完成。
最佳答案
local bottom, max_btm = {}, 0
for top = #t, 1, -1 do
for k, v in pairs(t[top]) do
local btm = bottom[k] or 0
if btm < top then
repeat btm = btm + 1
until btm == top or not t[btm][k]
if btm ~= top then
t[btm][k], t[top][k] = v
end
bottom[k] = btm
max_btm = math.max(max_btm, btm)
end
end
if max_btm < top then
t[top] = nil
end
end
关于lua - 合并表与余数 - Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35594570/