public static void Main() { Dictionary<int, Tuple<int, int, int>> dict = new Dictionary<int, Tuple<int, int, int>>(); Tuple<int, int, int> t; // key is tuple.Item1 t = new Tuple<int, int, int>(1, 1, 1); UpdateDictionary(dict, t); t = new Tuple<int, int, int>(2, 1, 1); UpdateDictionary(dict, t); PrintDictionary("Before any update", dict); t = new Tuple<int, int, int>(2, 2, 2); UpdateDictionary(dict, t); PrintDictionary("After update", dict); Console.ReadLine(); } static void UpdateDictionary(Dictionary<int, Tuple<int, int, int>> dict, Tuple<int, int, int> t) { if (dict.ContainsKey(t.Item1) ) { dict[t.Item1] = t; } else dict.Add(t.Item1, t); } static void PrintDictionary(string msg, Dictionary<int, Tuple<int, int, int>> dict) { Console.WriteLine(msg); foreach (KeyValuePair<int, Tuple<int, int, int>> x in dict) { Console.WriteLine("{0} {1} {2}", x.Value.Item1, x.Value.Item2, x.Value.Item3); } }