2016-06-09 44 views
2

我在這裏有一個問題...如果我有一個重複字符串結果少的表。我想知道每個人的價值。例如, 。一個函數返回一個未知的「字母」,並在數量上具有未知數量從表中計算未知變量

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

我想要得到它。

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

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

+0

對不起,我的英語

tCounter[v] = (tCounter[v] or 0) + 1 

:替換以下行! –

回答

2

寫一個函數,它創建的這些東西一個散列映射:

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) 

和表tCounts將如下所示:

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

通過一點點修改上面的功能,就可以得到所需的輸出。與

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

不應該「tCounter [v] =(tCounter [v]和tCounter [v] + 1)或0」爲「tCounter [v] =(tCounter [v]或0)+ 1」? – tonypdmtr

+0

@tonypdmtr謝謝!更新。 =) – hjpotter92