Well honestly the best way for accessing data is too like have a cache that you change, instead of the data itself, and once the player leaves then you get their cache and save it to the datastore
As @finaIlyhappy said, you can use a dictionary for that. I suppose the player is going to choose their skin and character appearance in another place, like a lobby. An easy way to send data between them is with DataStores. When a player joins Place A, they choose their skin and appearance, and store it on a DataStore with the player’s ID, for instance. When player joins Place B, they will get the DataStore with their ID. You can iterate through the table indexes, and change the player’s default accessories and skin with the value.
A cache can be as simple as a folder named “PlayerData” with another folder of all the player’s data inside with stringvalues, boolvalues, etc. Instead of constantly updating or grabbing a datastore, you’d update and grab data from said cache. Then you’d only need to grab and update the datastore when the player Joins or Leaves the game.