Could use a bitsum to record each players upgrade status and then store the resulting numerical value to nvault.
So you would have 5 upgrades as you do in your list. If the player has upgrades 1 and 3, their bitsum would look like 00000101 [1<<0 OR 1<<2] which is equal to "5". I can write this for you later.