3
陣列我有一個表在Lua:計數頻率成在Lua
p = {'sachin', 'sachin', 'dravid', 'Dhoni', 'yuvraj', 'kohli'}
欲計數表中的每個名字的頻率。
test1 = {sachin=2, dravid=1, Dhoni=1, yuvraj=1, kohli=1}
我想這個方案有很多的for循環。請看看我的代碼
> function exec(ele,p) count = 0 for k,v in pairs(p) do if ele == p[k] then count = count +1 end end return count end > new_table = {} > for k,v in pairs(p) do new_table[v] = exec(v,p) end > > for k,v in pairs(new_table) do print(k,v) end dhone 1 yuvraj 1 kohli 1 sachin 2 dravid 1
我想這樣做更有效的方式。我怎樣才能做到這一點?
'setmetatable(t,mt)'* t *一個錯字? – ms2008
@ ms2008vip啊,是的,我測試了't'這個名字,但是在這裏發佈時,我注意到OP使用了'newtable'這個名字,所以我相應地改變了它,顯然我錯過了一個。修正了,謝謝。 –