Is this what you're aiming for?

var myKeys = new List<MyKey>();
var myDict = myKeys.Distinct().ToDictionary(x => x, x => 0);

If you made any changes to the myKeys list they wouldn't be carried over to the dictionary, however any changes to the MyKey objects would be preserved.