Adding a value to list in dictionary for a certain key ,also adds the value to all keys in dictionary

following is the code snippet

//buys a outfit for player
public void BuyOutfit()
 {
    //gets the player being displayed
    var player = GetCurrentPlayerDisplayed();

    //gets the dictionary from playerprofile
    var unlockedOutfitsPerPlayerDictionary = PlayerData.PlayerProfile.UnlockedOutfitsPerPlayer;
    if (unlockedOutfitsPerPlayerDictionary == null)
        return;
    //adds player key to dictionary if doesnot contain key
    if (!unlockedOutfitsPerPlayerDictionary.ContainsKey(player.PlayerID))
        unlockedOutfitsPerPlayerDictionary.Add(player.PlayerID, new List<int>());
    //gets theoutfits unlocked
    //printing the outfits unlocked for each player
    foreach (var value in unlockedOutfitsPerPlayerDictionary[1])
        Debug.Log("key 1 " + value);
    foreach (var value in unlockedOutfitsPerPlayerDictionary[2])
        Debug.Log("key 2 " + value);
    foreach (var value in unlockedOutfitsPerPlayerDictionary[3])
        Debug.Log("key 3 " + value);
    //outfit not bought
    List<int> unlockedOutfitsPerPlayer;
    //retreiving outfit list for player
    if (unlockedOutfitsPerPlayerDictionary.TryGetValue(player.PlayerID, out unlockedOutfitsPerPlayer))
        if (!unlockedOutfitsPerPlayer.Contains(m_CurrentDisplayedOutfitId))
        {
            unlockedOutfitsPerPlayer.Add(m_CurrentDisplayedOutfitId); //add to dictionary

        }
        else
        {
            //do nothing
        }
}

For example:
Adding a value of 2 to list for key(player.playerId) 1, also adds to all keys

//before adding
key 1 1
key 2 1
key 3 1
//after adding
key 1 1
key 1 2
key 2 1
key 2 2
key 3 1
key 3 2

//expected behaviour
//before adding
key 1 1
key 2 1
key 3 1
//after adding
key 1 1
key 1 2
key 2 1
key 3 1

Is there any other code that modifies your Dictionary or the Lists in its values in any way?
It looks to me like maybe the entries all point to the same List.

Incidentally, I’m assuming that PlayerData.PlayerProfile.UnlockedOutfitsPerPlayer is a Dictionary<int, List<int>> but I don’t actually know that. So for future reference, bear in mind that it’s much easier for people to read the code and help you, if you use explicit types in the code you share.