Значит ли это, что я должен вставлять свои ключи друг за другом?
Да, вам нужно инициализировать каждый по порядку:
planets[Planet.CharacterId] = new Dictionary<string, Dictionary<string, int>>();
planets[Planet.CharacterId]["MetalMine"] = new Dictionary<string, int>();
planets[Planet.CharacterId]["MetalMine"]["Level"] = 0;
Вы можете использовать здесь синтаксис инициализатора коллекции, но это не сделает материал намного более читабельным или обслуживаемым.
Вместо словаря словарей словарей вам, кажется, лучше использовать класс:
public class Planet
{
public List<Mine> Mines { get; set; }
}
public class Mine
{
public string Type { get; set; }
public int Level { get; set; }
}
var planets = new Dictionary<string, Planet>();
planets[Planet.CharacterId] = new Planet
{
Mines = new List<Mine>
{
new Mine
{
Type = "Metal",
Level = 0
}
};
}