If an array is a numbered list, a dictionary is a labeled drawer. Instead of looking things up by position, you look them up by name. This is the structure behind basically every piece of game data you’ll ever store: a player’s stats, a shop item’s price, a save file.
local sword = {
name = "Excalibur",
damage = 50,
rare = true,
}
print(sword.name .. " does " .. sword.damage .. " damage")
Each entry is a key paired with a value. You read it back two ways: sword.name (the clean dot form) or sword["name"] (the bracket form). The dot is easier to type, the brackets are handy when the key is stored in a variable. Same result either way.
The mental model that makes everything click later: a player object is just a dictionary. When you build your tycoon, a plot is a dictionary, a dropper is a dictionary, the whole game is dictionaries holding other dictionaries. Get comfy here and the big projects stop feeling big.
Now make it yours: print the player name and coins together in one message. Then add a new key like team = "blue" and print that too.