按另一个值计数并迭代嵌套表-LUA

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

我试图根据其第一个值而不是键,在嵌套表中计算值的总和。

我有一个表格:

arr = {}
arr [100] = {1,“阿尔法”,4}
arr [10740] = {1,“布拉沃”,6}
arr [26104] = {2,“查理”,7}
arr [150] = {3,“三角洲”,1}
arr[1006] = { 2,“回声”,0} 
arr [91002] = {1,“福克斯特洛特”,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]的总和。 在he表格中,v [1]是1-16的固定数字,但它们的数量可能不同。

但是需要一个类似于以下的结果:

-第1组= 12 -第2组= 7 -第3组= 1

我可以通过创建单独的表格,取出属于组1的所有值,然后使用上述方法来实现-但如果感觉会有更好的方法。

提前致谢。

点赞
用户12918181
用户12918181

你正在正确的道路上,你需要额外的表来存储每个群组的计数:

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

-- 没有排序的输出
for k, v in pairs(group_count) do
  print('Group '..k..' = '..v)
end
2020-03-14 14:37:38