I often find myself creating a Dictionary with a non-trivial value class (e.g. List), and then always writing the same code pattern when filling in data.
For example
I am missing the GetOrAdd for Dictionary, that does exist for ConcurrentDictionary.
ConcurrentDictionary Conversion = new ConcurrentDictionary();
List before = new List { 1, 2, 1, 3 };
List after = before.Select(x => Conversion.GetOrAdd(x, Guid.NewGuid())).ToList();
This code will generate Guids for each number. Ending up converting both 1's in before to the same Guid.
In your case:
ConcurrentDictionary> dict;
keyValues = dict.GetOrAdd(key, new List());
keyValues.Add(aValueForKey);