lua中的表值排序

时间:2011-07-17 18:02:56

标签: sorting lua lua-table

我有一张这样的桌子:

tbl = {
    ['etc1'] = 1337,
    ['etc2'] = 14477,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

现在我需要对此表进行排序以使输出从最高值到最低值:

tbl = {
    ['etc2'] = 14477,
    ['etc1'] = 1337,
    ['etc3'] = 1336,
    ['etc4'] = 1335
}

已经尝试过很多函数,比如table.sort或官方手册中的其他函数,但没有任何帮助。所以希望你能帮助我们!

问候。

1 个答案:

答案 0 :(得分:1)

Lua表除了按键之外没有其他订购。您需要更像这样构建数据:

tbl = {
    [1] = { ['etc2'] = 14477 },
    [2] = { ['etc1'] = 1337 },
    [3] = { ['etc3'] = 1336 },
    [4] = { ['etc4'] = 1335 }
}

或者这个:

tbl = {
    [1] = { 'etc2', 14477 },
    [2] = { 'etc1', 1337 },
    [3] = { 'etc3', 1336 },
    [4] = { 'etc4', 1335 }
}

或者,如果你想将它与原始表一起使用:

tbl_keys = {
    [1] = 'etc2',
    [2] = 'etc1',
    [3] = 'etc3',
    [4] = 'etc4'
}

请注意,我非常明确并编写了所有数字索引。你当然可以省略它们,所以最后的解决方案是:

tbl_keys = {
    'etc2',
    'etc1',
    'etc3',
    'etc4'
}

也许这意味着您应该编写一个将原始数据转换为这种新形式的函数,或者也许您可以在之前完成表格之前完成它。