Lua 中对 Table[] 进行排序

2024-03-16

我有一个 Lua 表,我正在尝试对其进行排序。该表的格式如下:

tableOfKills[PlayerName] = NumberOfKills

这意味着,例如,如果我有一个名为 Robin 的玩家总共击杀 8 次,而另一个名为 Jon 的玩家总共击杀 10 次,那么表格将是:

tableOfKills[Robin] = 8
tableOfKills[Jon]   = 10

我如何对这种类型的表格进行排序以首先显示最高的击杀数?提前致谢!


Lua 中的表是一组具有唯一键的键值映射。这些对以任意顺序存储,因此表不以任何方式排序。

你能做的是iterate按某种顺序在桌子上。基础的pairs不保证您访问键的顺序。这是一个定制版本pairs,我称之为spairs因为它按排序顺序迭代表:

function spairs(t, order)
    -- collect the keys
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end

    -- if order function given, sort by it by passing the table and keys a, b,
    -- otherwise just sort the keys 
    if order then
        table.sort(keys, function(a,b) return order(t, a, b) end)
    else
        table.sort(keys)
    end

    -- return the iterator function
    local i = 0
    return function()
        i = i + 1
        if keys[i] then
            return keys[i], t[keys[i]]
        end
    end
end

这是使用此类函数的示例:

HighScore = { Robin = 8, Jon = 10, Max = 11 }

-- basic usage, just sort by the keys
for k,v in spairs(HighScore) do
    print(k,v)
end
--> Jon     10
--> Max     11
--> Robin   8

-- this uses an custom sorting function ordering by score descending
for k,v in spairs(HighScore, function(t,a,b) return t[b] < t[a] end) do
    print(k,v)
end
--> Max     11
--> Jon     10
--> Robin   8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lua 中对 Table[] 进行排序 的相关文章

  • 当尝试在随机数字数组中查找运行最大值时,会调用多少次更新最大值?

    假设我们有一个包含 N 到 N 的整数的数组 数组大小为 2N 1 我们首先对数组中的元素进行混洗 然后尝试通过从第一个元素到最后一个元素迭代数组来找到最大整数 代码示例是Java语言 int called 0 int max Intege
  • 列表列表中出现的频率

    我有一个列表列表 其中每个列表都已排序 我想调查的是某个元素在特定位置出现了多少次 例如 pnc 曾两次出现在第二位 一次出现在第三位 我的数据结构如下 dput degree l list c schwab 0 pnc 0 0344827
  • Lua 中的贪婪/非贪婪模式匹配和可选后缀

    在 Lua 中 我正在尝试模式匹配和捕获 384 Critical Strike Reforged from Parry Chance as 384 Critical Strike 后缀在哪里 Reforged from s 是可选的 长版
  • 适用于 IEEE 802.15.4 的 Wireshark Lua 解析器 - DissectorTable 名称?

    我正在lua中开发wireshark解析器来解析基于802 15 4的自定义协议 不幸的是我无法找出正确的 DissectorTable 名称 table DissectorTable get wpan wpan does not work
  • 找出区间内绝对差值最小的两个元素

    我给定了一个数组和一个 L R 类型的查询列表 这意味着找到任何两个数组元素之间的最小绝对差 使得它们的索引在 L 和 R 之间 其中数组的起始索引是 1 而不是 0 例如 采用包含元素 2 1 8 5 11 的数组 a 则查询 1 3 将
  • Lua(命令行)执行后保持打开状态

    我已经广泛寻找这个但我似乎找不到它 有什么方法可以执行Lua通过双击脚本 在中执行它 Lua Command Line 并在执行后保持打开状态 例如 print Hello World 该代码可以编译并运行 但是如果我双击hello lua
  • 如何为基于服务的数据库设置自动增量

    我在这里开始构建我的第一个本地数据库 基于服务的数据库 使用文本框将行写入基于服务的数据库 https stackoverflow com questions 39152801 write line to service based dat
  • 如何从表成员中引用lua表成员?

    我在 lua 有一张表 enUS LOCALE STHOUSANDS Thousands separator e g comma patNumber d LOCALE STHOUSANDS d regex to find a number
  • Python Pandas 按多索引和列排序

    在 Pandas 0 17 中 我尝试按特定列排序 同时维护分层索引 A 和 B B 是通过串联设置数据帧时创建的流水号 我的数据如下所示 C D A B bar one shiny 10 two dull 5 three glossy 8
  • 模式 ^u.meta(\.|$) 未按预期工作

    我有这个模式 u meta 预期行为 u meta 将匹配所有角色 例如 u meta u meta admin u meta admin system u meta 它不应该匹配如下所示的内容 u meta admin u meta ad
  • javascript排序将中间项放在顶部

    我有以下排序功能 var timeArray new Array 11 41 11 39 11 41 11 41 11 40 11 70 11 39 11 38 11 38 11 37 11 37 timeArray sort functi
  • 在 Lua/LuaFileSystem 中创建一个新文件

    我已经查看了 Lua 和 LuaFileSystem 文档 但尚未找到创建新文件的方法 我也在这里四处寻找 但目的相同 请注意 我正在寻找的解决方案必须与操作系统无关 以确保可移植性 但我很高兴针对不同的系统获得不同的答案 示例 将 Hel
  • 比较方法在对文件进行排序时违反了其一般契约

    我知道这种异常有很多问题 而且我确实找到了解决方案 但我的问题是不同项目中的相同代码不会抛出异常 而这个却抛出异常 这两个项目都具有相同版本的 Java 和其他库 基本上我有一个小函数 它从目录中检索文件列表 按时间戳对它们进行排序 然后返
  • 根据值列表对 XSLT 中的 XML 进行排序

    我想使用 XSL 转换对一个 XML 文件进行排序
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 在循环内部或外部声明本地更好吗? [复制]

    这个问题在这里已经有答案了 我习惯这样做 do local a for i 1 1000000 do a
  • 如何将 Lua 粘合到 C++ 代码?

    您使用 Luabind toLua 或其他库 如果使用 是哪一个 还是根本不使用 每种方法都有哪些优点和缺点 我不太同意 自己投票 将基本类型和静态 C 函数绑定到 Lua 是微不足道的 是的 但是当你开始处理表和元表时 情况就会发生变化
  • Highcharts 对堆积条形图进行排序

    我没有看到任何与我在 Highcharts 中遇到的确切场景相匹配的解决方案 因此我将我的发现发布在这里 我在 Highcharts 中有一个堆积条形图 需要按值从大到小对条形图进行排序并维护它们的类别关系 通常 首选解决方案是在将数据发送
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换

随机推荐

  • 使用 POST 进行 jQuery 缓存

    虽然我在 jQuery AJAX Post 请求中设置了 cache false 但它不会添加额外的 randomg 字符串 这是因为 post 不缓存吗 感谢您的时间 RFC 2616 http www faqs org rfcs rfc
  • 将 TextField 限制为特定的数字范围 JavaFX?

    您好 我需要限制 TextField javaFX 的输入 不仅适用于整数 还适用于 1 19 之间的数字 例如 我应该允许输入 3 19 但不能输入 33 44 例如 在 JavaFX 中创建数字 TextField 的推荐方法是什么 h
  • 如何查看Linux线程的状态?

    如何使用代码而不是工具来检查 Linux 线程的状态 我想知道线程是否正在运行 被锁阻塞或因其他原因而休眠 我知道 Linux 工具 top 可以完成这项工作 但如何在我自己的代码中实现它 谢谢 我认为你应该详细研究 proc http l
  • 对函数体评估感到困惑

    我对以下行为感到困惑Function In 1 InlineCellInMessage Function expr DisplayForm Cell BoxData MakeBoxes expr StandardForm Input Hol
  • XSLT:将平面列表转变为层次结构

    我尝试了解 XSLT 2 0 中的分组功能 我的源文件是
  • Flash/ActionScript 3.0 中的 StackTrace

    我想在代码的任何函数中查看堆栈跟踪 因此我做了类似的事情来调用它并打印堆栈跟踪 public function PrintStackTrace try throw new Error StackTrace catch e Error tra
  • 合并两个多维数组并重新索引所有子数组

    我有两个数组 我想将这两个数组合并为单个数组 请查看下面的详细信息 第一个数组 Array 0 gt Array a gt 1 b gt 2 c gt 3 1 gt Array a gt 3 b gt 2 c gt 1 第二个数组 Arra
  • 我可以将 CSS3 与 XHTML 1.0 一起使用吗?

    我可以将 CSS3 属性与 XHTML 一起使用 还是仅与 HTML5 网页一起使用 HTML版本和CSS之间有关系吗 还是完全没有关系 Thanks 如果浏览器支持 CSS3 和 XHTML 1 0 则可以同时使用两者 这两个标准彼此之间
  • github“网络推送通知”如何工作?

    github 似乎在其 Web 界面上使用轮询服务器进行实时通知 live github com 看起来该技术既不是基于 Websocket 也不是 XHR 轮询 它是如何开发的 他们似乎使用 HTML5 服务器发送事件 一段时间后 我通过
  • 为什么暂存目录也称为 Index/Git Index?

    我对 Git 中的暂存目录 Git Index 的命名感到困惑 叫Index有什么特殊含义吗 为什么不直接称为Cache 或Temp目录以便我们更容易理解呢 对我来说 索引可以帮助我们更快地搜索内容 就像 DBMS 中的索引一样 它与暂存区
  • 如何设置 Amazon S3 存储桶预签名 URL 过期时间(从当前日期算起 1 年内)

    图像上传到 Amazon S3 存储桶 我需要得到一个预签名 URL来自亚马逊服务器 我还想设置该 URL 的到期时间 这最多只需要 17 天 但我无法设置最多 1 年的到期时间 Calendar cal Calendar getInsta
  • 如何 Invoke-Expression 调用带有变量的函数或脚本?

    我使用此脚本收到无效路径错误 buildZIP starmatic echo buildZIP command XXXXXXXXXX L Gopi Prod App ToZipNew ps1 buildZIP Invoke Expressi
  • JPA 配置布尔字段以保留为整数

    在 JPA 中 有一个注释指定布尔字段应保留为整数 我正在使用 OpenJPA 它当前将布尔字段保留为位 我宁愿使用整数 1 或 0 您可以指定列定义 Column name boolColumn columnDefinition INT
  • 导航栏不显示

    这里我有2个看法 欢迎VC WebViewVC First 应用程序代理 calls 欢迎VC通过下面的代码 void presentWelcomeViewController WelcomeViewController welcomeVi
  • 为每个 cURL 请求返​​回 AJAX 结果

    基本上 我的想法是做某种形式的 实时 cURL 结果 正在生产的系统实时结果例如 当执行每个请求时 我将有一个表 其中包含需要通过 cURL 请求访问的网站列表 其中根据每个 cURL 响应的结果 我需要使用 AJAX 将数据发送回我的页面
  • 循环语句的 freemarker 模板

    我想在 freemarker 模板中创建 for 语句 我正在阅读指南http freemarker sourceforge net http freemarker sourceforge net 但只有清单 我如何创建 for 语句或 f
  • 关于将临时绑定到构造函数中的引用成员的虚假警告

    据我所知 如果临时对象绑定到构造函数的初始值设定项列表中的引用成员 则该对象将在构造函数返回时被销毁 However 考虑以下代码 include
  • 使用 jQuery 重新排序 div

    是否可以使用 jQuery 对某些 div 重新排序 我有几个 div 我想根据 div 中的数据索引号在页面加载时重新排序它们 Now div class score 3 div div class score 2 div div cla
  • 如何在 Vagrant 和 Homestead 中回滚 PHP 版本?

    因此 我的公司正在使用 PHP 和 Laravel 为客户进行软件开发 我是公司的新人 正在使用 VirtualBox 设置较新的 Macbook 使用 Homestead 和 Vagrant 设置 Laravel 我已经完成了所有设置 以
  • Lua 中对 Table[] 进行排序

    我有一个 Lua 表 我正在尝试对其进行排序 该表的格式如下 tableOfKills PlayerName NumberOfKills 这意味着 例如 如果我有一个名为 Robin 的玩家总共击杀 8 次 而另一个名为 Jon 的玩家总共