You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua中实现Table键值反转:值映射含原键的表?

Lua Table 按值分组反转

需求说明

将原table的结构反转:以原table的值作为新table的键,把所有对应相同值的原键收集为数组,作为新table对应键的值。

原table数据(根据输出反推)

local my_table = {
    a = 80,
    b = 80,
    c = 70,
    d = 40,
    e = 70,
    f = 80
}

转换实现代码

local new_table = {}

-- 遍历原table构建新结构
for key, value in pairs(my_table) do
    -- 初始化对应值的数组(如果不存在)
    if not new_table[value] then
        new_table[value] = {}
    end
    -- 将原键添加到对应数组
    table.insert(new_table[value], key)
end

-- 打印新table(匹配期望输出格式)
for key, value in pairs(new_table) do
    local key_list = table.concat(value, ",")
    print(string.format("%d {%s} # table", key, key_list))
end

代码说明

  1. 初始化空的new_table用于存储转换结果
  2. 遍历原my_table的每一组键值对:
    • 若new_table中没有以当前value为键的条目,则创建一个空数组
    • 将当前的key插入到该数组中
  3. 遍历new_table时,用table.concat把数组元素拼接为字符串,输出成期望的格式

原脚本修正提示

原脚本存在两处语法问题:

  • 变量名拼写错误:my_talbe应改为my_table
  • for循环缺少do关键字,正确的遍历代码应为:
for key, value in pairs(my_table) do
    print(key, value)
end

内容的提问来源于stack exchange,提问作者kerberos94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:20:39