首页 > 解决方案 > 基于另一个计数值,遍历嵌套表 - LUA

问题描述

我还在学习 lua,pair 功能很棒,但我显然不知道如何正确使用它:

我正在尝试根据第一个值而不是键来计算嵌套表中值的总数。

我有一张桌子:

arr = {}
arr[100] = {1, "alpha", 4}
arr[10740] = {1, "bravo", 6}
arr[26104] = {2, "charlie", 7}
arr[150] = {3, "delta", 1}
arr[1006] = {2, "echo", 0}
arr[91002] = {1, "foxtrot", 2}

现在我可以使用 pair 函数来计算表中 v[3] 的总数:

count = 0
for k, v in pairs(arr) do
count = count + v[3]
end;
print count

我需要做的是计算按 v[1] 分组的 v[3] 的总数。在他的表中 v[1] 是 1-16 的固定数字,但它们的数量可以不同。

但需要类似的结果:

我可以通过创建单独的表来实现它,取出第 1 组中的所有值,然后使用上述方法 - 但我觉得必须有更好的方法。

提前谢谢了。

标签: lualua-table

解决方案


您走对了,您需要额外的表格来存储每组的计数:

local group_count = {}
for k, v in pairs(arr) do
  group_count[v[1]] = (group_count[v[1]] or 0) + v[3]
end

-- not sorted output
for k, v in pairs(group_count) do
  print('Group '..k..' = '..v)
end

推荐阅读