mindfaQ - The problem with that is when they die/you change layouts, the experience is lost. By making it an array, it will not be destroyed allowing you to track it throughout the whole game and without causing mess with global variables.
To make it work with multiple characters, you simply create a variable in the array called 'id' and set it the the relevant unit's UID. It does involve 1 extra condition for picking, but is more flexible. Alternatively, you could just add a name variable to the array and reference that.
To me containers are not good for this sort of thing as you can't lose one without the other. If you decide later you want effects that, say, remove a character from play for X seconds, they now lose all their experience. You can make fixes and work-arounds of course, but that just keeps adding to the mess and requires more thought for solutions as these problems arise, instead of always knowing exactly what to do. And obviously if you want to carry experience between layouts, containers simply don't work at all.
To reduce the need for picking, you can also use functions. So character kills enemy: call function 'getExp' with parameters: character.uid, experience amount. Then in that function, you can do all your picking and experience assigning. 1 condition, 1 action, less room for error and more room for improvement.