sorting - Lua 迭代按值排序的表

标签 sorting lua iterator

我有一个表t,其中包含许多条目,例如t["name1"] = 42t["name2"] = 123...

我想按值编号的降序迭代表。如何才能做到这一点?我找到了创建迭代器函数的方法,这些迭代器函数在表的上进行排序,但无法遍历具有有序值的条目。

最佳答案

function pairs_order_by_values_desc(tab)
   local keys = {}
   for k in pairs(tab) do
      keys[#keys + 1] = k
   end
   table.sort(keys, function(a, b) return tab[a] > tab[b] end)
   local j = 0
   return
      function()
         j = j + 1
         local k = keys[j]
         if k ~= nil then
            return k, tab[k]
         end
      end
end

local t = {}
t.name1 = 42
t.name2 = 123
t.name3 = 99

for k, v in pairs_order_by_values_desc(t) do
   print(k, v)
end

关于sorting - Lua 迭代按值排序的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454472/

相关文章:

java - 在 Java 中使用带有链表的迭代器

c# - 将字符串数组排序为整数,但可以有非整数值

c++ - 我如何从 lua5.1 (luajit) 的 lua CFunctions 中提取 lightuserdata?

lua - Lua中pairs()的 "type signature"是什么?

java - 在 Java 中使用带有增强 for 循环的迭代器?

python - 迭代字典并从内部字典中获取值

sorting - 代码形式的批判 Real World Haskell,第 3 章练习

java - 可以访问 ArrayList 的排序父类(super class)

javascript - 当属性不一致时,如何根据属性对 JS 对象列表进行排序

需要 Lua 相对路径