基于另一个计算值,遍历嵌套 table - LUA
Counting values based on another, iterating through a nested table - LUA
我还在学习 lua 配对功能很棒,但我显然不知道如何正确使用它:
我正在尝试计算嵌套 table 中值的总和,基于它的第一个值,而不是键。
我有一个 table:
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] 是组
中的数字
现在我可以使用 pair 函数来计算 table 中 v[3] 的总数:
count = 0
for k, v in pairs(arr) do
count = count + v[3]
end;
print count
我需要做的是计算按 v[1] 分组的 v[3] 的总和。
在他 table v[1] 中是 1-16 的固定数字,但可以有不同的数量。
但需要这样的结果:
- 组 1 = 12
- 组 2 = 7
- 组 3 = 1
我可以通过创建单独的 tables 来实现它,取出第 1 组中的所有值,然后使用上面的值 - 但我觉得必须有更好的方法。
非常感谢。
你走对了,你需要额外的 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
我还在学习 lua 配对功能很棒,但我显然不知道如何正确使用它:
我正在尝试计算嵌套 table 中值的总和,基于它的第一个值,而不是键。
我有一个 table:
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] 是组 中的数字
现在我可以使用 pair 函数来计算 table 中 v[3] 的总数:
count = 0
for k, v in pairs(arr) do
count = count + v[3]
end;
print count
我需要做的是计算按 v[1] 分组的 v[3] 的总和。 在他 table v[1] 中是 1-16 的固定数字,但可以有不同的数量。
但需要这样的结果:
- 组 1 = 12
- 组 2 = 7
- 组 3 = 1
我可以通过创建单独的 tables 来实现它,取出第 1 组中的所有值,然后使用上面的值 - 但我觉得必须有更好的方法。
非常感谢。
你走对了,你需要额外的 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