I found that a dictionary is the best way to store and manage an inventory.
I have a sprite object with one animation and a frame for each inventory item.
when i want to add a new item to the inventory i add a key to the dictionary with the items name and the value is the animation frame for that object.
then i have a function that shows the inventory, I create a new item for each key on the dictionary set the name value to the key name and the animation frame to the key's value.
I don't keep any state of the item, if it changes (combine or what not) i just delete the old key and create a new one instead.