Вы можете использовать , словарь инициализирует .Не так элегантно, как Python, но может жить с:
var persons = new Dictionary<string, Dictionary<string, double>>
{
{ "alfred", new Dictionary<string, double> { { "age", 20.0 }, { "height_cm", 180.1 } } },
{ "barbara", new Dictionary<string, double> { { "age", 18.5 }, { "height_cm", 167.3 } } },
{ "chris", new Dictionary<string, double> { { "age", 39.0 }, { "height_cm", 179.0 } } }
};
А потом:
persons["alfred"]["age"];
Также обратите внимание, что вам нужно Dictionary<string, Dictionary<string, double>>
для этой структуры, а не Dictionary<string, Dictionary<string, double>[]>
.
Также работа с такой структурой может быть немного PITA и нанести вред читабельности и безопасности кода во время компиляции.
В .NET предпочтительнее работать со строго типизированными объектами, например так:
public class Person
{
public double Age { get; set; }
public string Name { get; set; }
public double HeightCm { get; set; }
}
, а затем:
var persons = new[]
{
new Person { Name = "alfred", Age = 20.0, HeightCm = 180.1 },
new Person { Name = "barbara", Age = 18.5, HeightCm = 180.1 },
new Person { Name = "chris", Age = 39.0, HeightCm = 179.0 },
};
, а затем вы можете использовать LINQ для получения любой необходимой вам информации:
double barbarasAge =
(from p in persons
where p.Name == "barbara"
select p.Age).First();
Следует отметить, что, конечно, используяколлекции не будут такими быстрыми, как поиск в хэш-таблице, но в зависимости от ваших потребностей с точки зрения производительности вы также можете с этим справиться.