基于另一个值进行计数,在嵌套表LUA中迭代



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

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

我有一张桌子:

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}
  • k是一个随机属性-对于密钥来说是奇数,但我必须是这样
  • v[1]是组ID
  • v[2]是组名
  • v[3]是组中的数字

现在我可以使用配对函数来计算表中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组=12
  • 组2=7
  • 组3=1

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

非常感谢。

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

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

最新更新