基于另一个计数值,遍历嵌套表 - LUA
Posted
技术标签:
【中文标题】基于另一个计数值,遍历嵌套表 - LUA【英文标题】:Counting values based on another, iterating through a nested table - LUA 【发布时间】:2020-06-26 05:52:07 【问题描述】:我还在学习 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
k 是一个随机属性 - 对一个键来说是奇数,但我必须这样
v[1] 是组 ID,
v[2] 是组名,
v[3] 是组中的数字
现在我可以使用 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 组 = 12 第 2 组 = 7 第 3 组 = 1我可以通过创建单独的表,取出第 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
【讨论】:
谢谢,我不知道如果没有另一张桌子是否可行。 “或 0” 是为了避免您事先声明变量吗?如果是这样,那是一个不错的捷径。 Lua 空值评估为 false,因此这是检查未声明键的最简单方法。非常相似的快捷方式:if a then v = 1 else v = 2 end
是 v = a and 1 or 2
(与 C 中的 v = a ? 1 : 2
相同)以上是关于基于另一个计数值,遍历嵌套表 - LUA的主要内容,如果未能解决你的问题,请参考以下文章