如何根据一个表的整数值对两个表进行排序
2017-12-14 23:22:59
收藏:0
阅读:79
评论:1
我正在尝试完善一个脚本,但似乎无法以所需的方式打印表格数据。
我有一个包含整数和一个包含字符串的表。 这些表是使用循环自动创建的;但在我的测试脚本中,我手动添加了字符串表的索引,而整数表仍然是自动创建的。同样,在我的测试脚本中,我只是使用math.random填充整数表。我有一个"if..then"跳过任何"0"条目,然后再打印。
我想要的是通过表格sc中的整数对每个打印行进行数值排序,然后打印与之关联的字符串ctable。
例如:math.random循环在表格sc中创建索引,其中sc ={"3","1","10","8","7","10"} 然后,我希望该表按降序打印,正确的字符串从ctable中获取。
> 期望打印结果:
> g = 10
> o = 10
> b = 8
> p = 7
> c = 3
> w = 1
在尝试了table.sort等方法后,我回到了没有排序的原始脚本(如下所示)
local ctable = {"c","w","g","b","p","o"}
local sc = {}
for i = 1, 6 do
local mr = math.random(1,10)
sc[i] = mr
if sc[i] <= 0 then
goto done
else
print(ctable[i] .. " = " ..sc[i])
end
::done::
i = i + 1
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你需要一种将随机数与字符串值关联起来的方式。
使用两个表,在进行排序之前,关联是表的索引:
-- 索引: 1 2 3 4 5 6 local t = {'c','w','g','b','p','o'} local n = { 3, 1, 10, 8, 7, 10}Lua 的
table.sort接收一个比较函数,该函数接收两个值,但您需要知道索引以便可以查看其他表以控制排序顺序。您可以创建一个查找表,即键是值,值是索引的表:
local m = {} for i, v in ipairs(t) do m[v] = i end -- m = {c=1, w=2, g=3, b=4, p=5, o=6}然后,在比较函数中,您可以使用
m[a]或m[b]按值查找索引。使用索引在n中查找关联数字:table.sort(t, function(a, b) return n[m[b]] < n[m[a]] end)这仅在
t中的值是唯一的时起作用。如果字符串可以重复,则无法使用查找表,因此您可以在一个表中存储所有内容。local t = {{'c',3},{'w',1},{'g',10},{'b',8},{'p',7},{'o',10}} table.sort(t, function(a, b) return b[2] < a[2] end) for i, v in ipairs(t) do print(v[1]..' = '..v[2]) end -- o = 10 -- g = 10 -- b = 8 -- p = 7 -- c = 3 -- w = 1Lua 的
table.sort不是稳定的;从手册中可以看出:这就是为什么“g”和“o”的顺序不如您所预期的那样。