从表中计算未知变量

我在这里有一个问题...如果我有一个包含几个重复的字符串结果的表格。我想知道每个值和数量的价值。例如,一个函数返回一个未知的“字母”,数量未知

Function () return Table end
Table ={'a','a','c','b','b','a',...}

我想得到这个。

table.a={'a','a','a'}
table.b={'b','b'}
table.c={'c'}
....
....

我不知道如何解决它...

点赞
用户1190388
用户1190388

创建哈希表的函数

下面是一个创建哈希表的函数:

function RepetitionCounter(tInput)
    local tCounter = {}
    for i, v in ipairs(tInput) do
        tCounter[v] = (tCounter[v] or 0) + 1
    end
    return tCounter
end

你可以这样使用它:

local tData = {'a','a','c','b','b','a',...}
local tCounts = RepetitionCounter(tData)

这里的 tData 是一个包含许多字符串的数组,tCounts 是一个哈希表,它将每个字符串映射到它在数组中出现的次数上。tCounts 的结构如下:

tCounts.a = 3
tCounts.b = 2
tCounts.c = 1

你可以使用这个函数来统计重复元素出现的次数。


更改函数以获得所需的输出

通过对上面的函数进行一些修改,你可以得到所需的输出。用下面的代码替换原来的代码:

if not tCounter[v] then
    tCounter[v] = {}
else
    table.insert(tCounter[v], v)
end

这样,当有重复元素时,tCounter[v] 将是一个数组,其中存储了所有的重复元素。否则,tCounter[v] 将是一个空表。

这个修改后的函数可以用来统计重复元素,同时还可以找出所有的重复元素。

下面是修改后的完整函数:

function RepetitionCounter(tInput)
    local tCounter = {}
    for i, v in ipairs(tInput) do
        if not tCounter[v] then
            tCounter[v] = {}
        else
            table.insert(tCounter[v], v)
        end
    end
    return tCounter
end
2016-06-09 08:14:21