如何按确切的顺序迭代表?

2023-12-09

如果我尝试输出此表,它们将以错误的顺序循环:

local letters   =   {DIN1="hi", AIN1= "my", AIN2 ="name", DIN2="is"}

for name, value in pairs(letters) do
    print(name,value)
end

预期输出:

DIN1   hi
AIN1   my
AIN2    name
DIN2   is

Output:

AIN1    my
DIN2    is
DIN1    hi
AIN2    name

我如何编码以便 for 循环遍历表的实际顺序? (定义的顺序)

编辑:我不需要字母顺序,但需要与表定义中的顺序相同。

编辑:我需要打印密钥和值。在答案“Lua inpairs with same order as it's write”中,只会打印索引号和值


您可以利用表的整数部分按顺序存储键:

function add(t, k, v, ...)
    if k ~= nil then
        t[k] = v
        t[#t+1] = k
        return add(t, ...)
    end
    return t
end

t = add({ }, "A", "hi", "B", "my", "C", "name", "D", "is")

for i,k in ipairs(t) do
    local v = t[k]
    print(k, v)
end

当然,这假设整数键不被任何东西使用,除了add.

insert(t, k, v) and remove(t, k)留给读者作为练习。

编辑: 省略号(点)add函数允许根据需要传递尽可能多的参数来一次设置多个 kv 对。如果没有这个,我们每次调用只能设置一对,比如add(t, "A", "hi")。函数定义add(t, k, v, ...)将前三个参数分配给t, k, v并且不影响其他人。然后add处理第一对(t[k]=v)并与其余部分递归...的论点。

          t   k    v    ...
level 1: (t, "A", "hi", "B", "my", "C", "name", "D", "is")
level 2: (t,         <- "B", "my", "C", "name", "D", "is")
level 3: (t,                    <- "C", "name", "D", "is")
level 4: (t,                                 <- "D", "is")
level 5: (t,                                          <- )

在5级时,k and v take nils,因为参数列表太短,递归停止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按确切的顺序迭代表? 的相关文章

  • 是否可以在没有迭代器变量的情况下创建“for”循环? (如何让代码循环一定次数?)

    是否可以在没有以下情况的情况下执行以下操作i for i in range some number do something 如果你只想做某件事N次并且不需要迭代器 从我的头顶上看 不 我认为你能做的最好的事情就是这样 def loop f
  • Itertools 与嵌套循环性能

    我必须生成列表中所有两对项目组合 现在 我知道有两种方法可以实现这一点 嵌套 for 循环和 python 的内置迭代工具 from itertools import combinations foo 1 2 3 4 for i in xr
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 循环 2 个列表,重复最短的列表,直到最长的列表结束 [重复]

    这个问题在这里已经有答案了 我确信有一种简单而明显的方法可以做到这一点 但我一直在谷歌搜索和阅读文档 但我找不到任何东西 这就是我想要实现的目标 la a1 a2 a3 a4 lb b1 b2 result a1 b1 a2 b2 a3 b
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • Lua表在内存中是如何处理的?

    lua如何处理表的增长 是否相当于ArrayList在Java中 IE 需要连续的内存空间 并且当它变得大于已经分配的空间时 内部数组被复制到另一个内存空间 有什么聪明的方法来引导吗 我的问题是 表是如何存储在内存中的 我不是问如何在 Lu
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 如何从 Lua 内部运行另一个脚本?

    我需要从另一个 Lua 脚本中执行一个 Lua 脚本 有多少种方法 我该如何使用它们 通常您会使用以下内容 dofile filename lua 但你可以通过以下方式做到这一点require 很好 例子 foo lua io write
  • 循环直到在Python中接收到特定的用户输入[重复]

    这个问题在这里已经有答案了 你好 我正在为学校做评估 我是Python的新手 我真的不知道如何循环这个 achieved 50 predefined variables for grade input merit 70 excellence
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • Python循环读取数据的文本文件[重复]

    这个问题在这里已经有答案了 我是Python新手 虽然我确信这可能是一个微不足道的问题 但我花了一整天的时间尝试以不同的方式解决这个问题 我有一个包含如下数据的文件
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • For 循环覆盖 HTML 中的文本

    我的数组称为myEmployees其中有 5 个名字 但当我运行代码时 它只打印出其中的 3 个 我相信这种情况正在发生 因为for脚本中的循环会覆盖它在 HTML 文档中编写的前一行 我怎样才能解决这个问题 年度公告板公告 恭喜泰勒 你在
  • 如何在函数和循环中使用 data.table?

    在评估效用时data table vs dplyr 一个关键因素是在函数和循环中使用它的能力 为此 我修改了本文中使用的代码片段 data table 与 dplyr 一个可以做得很好而另一个不能做或做得很差吗 https stackove
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • 如何实现再次播放功能?

    我希望在游戏结束时得到提示 如果我还想再玩一次的话 并使用 Y N 输入 退出游戏或重复游戏 我该如何以最有效的方式解决这个问题 编辑 描述资源路径位置类型 类型 Main Main java ScaredyCat src se grupp

随机推荐

  • 如何以另一种形式调用PHP中的函数?

    我有一个带有名字的页面1 php里面有一个功能 现在我想调用该函数2 php在 PHP 2 中 我写了func 这个函数在1 php 但它有这个错误 Fatal error Call to undefined function func i
  • 如何以编程方式在 Selenium Jupiter 的基类中配置 WebDriver?

    我想将基于 JUnit 4 的现有 Selenium 测试迁移到 JUnit 5 为此 我想利用硒 木星 测试必须满足的一项要求是 能够在运行时切换 WebDriver 实现 基于执行环境 使用所有测试的一个公共基类 在开发人员计算机 Wi
  • Eclipselink 支持包含正则表达式的查询吗?

    我已经看到像 MySQL 这样的 DBMS 支持包含正则表达式的查询 Eclipselink 支持这个吗 我必须检索具有与某些正则表达式匹配的某些字符串属性的实体 SELECT X FROM Person X WHERE X name
  • Phoenix.ActionClauseError at POST,没有匹配的操作子句来处理请求

    每当我发布到 api subastas 时 我都会收到此错误 Phoenix ActionClauseError at POST api subastas bad request to IascSubastas SubastaControl
  • 将 Python 列表和字典理解与计数器结合起来

    我想传输元组列表 1 3 5 2 4 6 7 8 9 到一个列表dict 为了创建一个 pandas 数据框 如下所示 index 1 match 1 index 1 match 3 index 1 match 5 index 2 matc
  • Android上从网页启动流媒体音频播放器的方法

    要链接到 SHOUTcast HTTP 互联网广播流 传统上您会链接到播放列表文件 例如 M3U 或 PLS 从那里 浏览器将启动注册来处理播放列表的音频播放器 这适用于任何 PC Palm Blackberry 和 iPhone 这个方法
  • 如何在对数图中设置双轴刻度

    在我的图中 辅助 x 轴用于显示某些数据的另一个变量的值 现在 原始轴已按对数缩放 不幸的是 孪生轴将刻度 和标签 放置在原始轴的线性刻度上 而不是按照对数刻度 如何克服这个问题 这里的代码示例应该将孪生轴的刻度放在与原始轴相同的 绝对轴
  • 如何使 scanf 有选择地忽略其转换说明符之一?

    char value1 10 int value2 int value3 0 if scanf s d d value1 0 value2 value3 scanf s d value1 0 value2 我正在尝试使用scanf插入 3
  • 使用zxing进行QR码编码和解码

    好吧 所以我要打消这里有人以前使用过 zxing 的可能性 我正在开发一个Java应用程序 它需要做的一件事是将数据的字节数组编码为QR码 然后稍后对其进行解码 这是我的编码器的示例 byte b 0x48 0x45 0x4C 0x4C 0
  • 检查值是否存在于多维数组java中

    没有for loop 有什么方法可以查看 a 中是否存在某个值multidimensional array 我发现 Arrays asList ArrayName contains itemToFind 但这只会搜索数组的第一个维度 而我需
  • 如何检查 Template Haskell 中引用的数据构造函数名称?

    我正在尝试学习一些 Haskell 模板 作为练习 我编写了一个可以生成类似内容的函数isLeft and isRight 灵感来自这个问题 这是我的卑微尝试 isA connam do ConE nam lt connam nn lt n
  • jqgrid中如何删除行

    在我的 jqgrid 中 我有一个图标 当我单击它时 我必须调用 ajax 函数来删除数据库中的数据 这是代码 function loadnotespese clienti navgrid jqGrid colNames Tipo spes
  • 我如何检查是否没有给出参数[重复]

    这个问题在这里已经有答案了 我想检查用户是否给了脚本任何参数 如果是这种情况 脚本应该关闭 if then exit fi 不管用 你可以这样尝试 if eq 0 then echo Illegal number of parameters
  • Toast 通知不起作用?

    我按照几个示例在单击应用程序中的按钮时执行 Toast 通知 我逐步完成了以下示例 http msdn microsoft com en us library windows apps xaml hh868254 aspx 我没有收到任何错
  • java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

    我是 Websphere 应用程序服务器的新手 请让我知道我哪里做错了 我正进入 状态java lang NoSuchMethodError javax persistence JoinColumn foreignKey Ljavax pe
  • Rails 查询两小时之间的时间戳

    我在 Ruby on Rails 中遇到问题 我需要允许用户设置两个时间列 然后查询当前时间在两个时间戳的小时内的该模型的所有实例 天数并不重要 只要在指定的开始和结束时间戳内即可 Thanks Brian 像这样的东西应该可以工作 假设M
  • Rails 5 ActionCable WebSockets 未返回状态为 101 升级响应的升级标头

    编辑 显示在最后 发现升级标头实际上已创建 我的工作地点是动作电缆示例代码库 尝试构建一个 WebSocket 应用程序 Chatty 应用程序依赖于应用程序中提供的浏览器客户端 工作正常 但是 我不会使用该客户端 因为我需要外部物联网连接
  • 计算 WiFi 带宽或 WiFi 信号强度

    我想使用 jQuery 或 JavaScript 计算 WiFi 带宽或 WiFi 信号强度 我知道我们可以在服务器端代码上计算强度 但我想在客户端上计算 检查这个网站 我认为这适合 WiFi 连接 http www wiseloop co
  • 使用 Factory 创建共享 ViewModel

    我有一个包含 3 个选项卡的 TabLayout 的文档片段 TabRulesFragment TabProceduresFragment TabGuidanceFragment 在 DocumentsFragment 中 我使用工厂初始化
  • 如何按确切的顺序迭代表?

    如果我尝试输出此表 它们将以错误的顺序循环 local letters DIN1 hi AIN1 my AIN2 name DIN2 is for name value in pairs letters do print name valu