arrays - 如何按 Lua 中的值对表进行排序?

标签 arrays lua lua-table

我有一个由键/值对组成的表:

mytable[a] = 1, 
mytable[b] = 4, 
mytable[r] = 7, 
mytable[f] = 2,

等等

我想按数字对表格进行排序。所以我希望表格是 {(a, 1), (f, 2), (b, 4), (r, 7)} 我试过使用

table.sort(mytable, function(a, b) return a[2] > b[2] end)

但是这似乎没有用... 谢谢

最佳答案

“Programming Lua”(我不记得具体在哪里)建议的一种方法是将键提取到一个单独的序列中,然后对序列进行排序,并使用生成的排序序列索引到原始表中。示例:

keys = {}

for key, _ in pairs(mytable) do
    table.insert(keys, key)
end

table.sort(keys, function(keyLhs, keyRhs) return mytable[keyLhs] < mytable[keyRhs] end)

然后您可以遍历键以检索相应的值:

for _, key in ipairs(keys) do
    print(key, mytable[key])
end

关于arrays - 如何按 Lua 中的值对表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334729/

相关文章:

python - pytorch - torch.gather 的倒数

algorithm - 创建三次和/或二次贝塞尔曲线以适应路径

function - 将表作为参数传递给 Lua 中的函数

arrays - 如何处理 "non-conformable"数组?

c# - 使用数组或泛型时 TestCase 在 NUnit 中的显示名称

linux - 编辑 rc.lua 时的 Tabcompletion 和 docview

variables - Rbx.Lua - 为什么我不能将 .txt 文件存储为表格?

function - lua不修改函数参数

java - 数组中的三个最大值

string - 复杂的字符串替换问题