flusk
flusk

Reputation: 31

Get all repeated itens from a table in Lua

I need a little help here Let's suppose I have a table with numbers.

tbl = {'item1' = 6, 'item2' = 1, 'item3' = 6, 'item4' = 3, 'item5' = 2, 'item5' = 3}

I wanna put all repeated numbers in the same table (with key and value) like this:

repeated = {'item1' = 6, 'item3' = 6, 'item4' = 3, 'item5' = 3}

and creat a new one with the "not repeated" numbers:

notrepeated = {'item2' = 1, 'item5' = 2}

Can someone help? Thank you so much.

Upvotes: 3

Views: 55

Answers (1)

Luatic
Luatic

Reputation: 11171

-- Count the items for each number
local itemsByNum = {}
for item, num in pairs(tbl) do
    itemsByNum[num] = (itemsByNum[num] or 0) + 1
end
-- Now move objects to the respective tables
local rep, noRep = {}, {} -- can't use "repeat" as that's a Lua keyword
for item, num in pairs(tbl) do
    if itemsByNum[num] > 1 then -- repeated at least once
        rep[item] = num
    else -- unique number
        norep[item] = num
    end
end

Upvotes: 2

Related Questions