我想做一个包含另一个字典的字典。我希望我的字典只有一个键有多个值,但我收到一个错误:"具有相同键的元素已存在"。我已经使用HashMap在JAVA中完成了它,但它在C#...
中没问题这样的事情:
static Dictionary<int, Dictionary<double, double>> _dict = new Dictionary<int, Dictionary<double, double>>()
{
{ 1, new Dictionary<double,double>{ { 0.990, 0.0316 } } },
{ 1, new Dictionary<double,double>{ { 0.975, 0.0398 } } },
{ 1, new Dictionary<double,double>{ { 0.950, 0.0239 } } },
{ 1, new Dictionary<double,double>{ { 0.9 , 0.0158 } } },
{ 1, new Dictionary<double,double>{ { 0.1 , 2.71 } } },
{ 1, new Dictionary<double,double>{ { 0.050, 3.84 } } },
{ 1, new Dictionary<double,double>{ { 0.025, 5.02 } } },
{ 1, new Dictionary<double,double>{ { 0.010, 6.63 } } },
{ 2, new Dictionary<double,double>{ { 0.990, 0.02 } } },
{ 2, new Dictionary<double,double>{ { 0.975, 0.05 } } },
{ 2, new Dictionary<double,double>{ { 0.950, 0.10 } } },
{ 2, new Dictionary<double,double>{ { 0.9 , 0.21 } } },
{ 2, new Dictionary<double,double>{ { 0.1 , 4.60 } } },
{ 2, new Dictionary<double,double>{ { 0.050, 5.99 } } },
{ 2, new Dictionary<double,double>{ { 0.025, 7.38 } } },
{ 2, new Dictionary<double,double>{ { 0.010, 9.21 } } },
{ 3, new Dictionary<double,double>{ { 0.990, 0.12 } } },
{ 3, new Dictionary<double,double>{ { 0.975, 0.22 } } },
{ 3, new Dictionary<double,double>{ { 0.950, 0.35 } } },
{ 3, new Dictionary<double,double>{ { 0.9 , 0.58 } } },
{ 3, new Dictionary<double,double>{ { 0.1 , 6.25 } } },
{ 3, new Dictionary<double,double>{ { 0.050, 7.81 } } },
{ 3, new Dictionary<double,double>{ { 0.025, 9.35 } } },
{ 3, new Dictionary<double,double>{ { 0.010, 11.34 } } },
};
我尝试了LordTakkera的解决方案。
我这样做是因为我必须代表KHI2表。我在JAVA中这样做,我的软件工作完美,但我不知道如何在.NET中使用REF。
答案 0 :(得分:0)
如果您有重复的密钥,如下所示,您需要在单个内部字典中使用所有这些值。
{ 1, new Dictionary<double,double>{ { 0.990, 0.0316 } } },
{ 1, new Dictionary<double,double>{ { 0.975, 0.0398 } } },
{ 1, new Dictionary<double,double>{ { 0.950, 0.0239 } } },
{ 1, new Dictionary<double,double>{ { 0.9 , 0.0158 } } },
{ 1, new Dictionary<double,double>{ { 0.1 , 2.71 } } },
{ 1, new Dictionary<double,double>{ { 0.050, 3.84 } } },
{ 1, new Dictionary<double,double>{ { 0.025, 5.02 } } },
{ 1, new Dictionary<double,double>{ { 0.010, 6.63 } } },
变为:
{ 1, new Dictionary<double,double>{
{ 0.990, 0.0316 }, { 0.975, 0.0398 }, { 0.975, 0.0398
}, ........ }}
答案 1 :(得分:0)
正如您的错误所示,您不能在C#字典中使用相同的键具有多个值。这很好,重复键会返回什么值?这充其量只是未定义的行为。
但是,您编写的代码只需一次调整即可正常工作:
static Dictionary<int, List<Dictionary<double, double>> = new Dictonary<int, List<Dictionary<double, double>>()
{
{1, new List<Dictionary<double, double>()
{
new Dictionary<double,double>{ { 0.990, 0.0316 } },
new Dictionary<double,double>{ { 0.975, 0.0398 } }
}
},
...
}
键可以映射到集合(可以自己保存集合)。从您发布的代码中,这看起来是最可能的解决方案。如果我能说清楚的话,请告诉我!
更新:如果您保证每个“嵌套”词典只有一个元素,您可以使用另一个答案或KeyValuePair:
static Dictionary<int, List<KeyValuePair<double, double>> = new Dictonary<int, List<KeyValuePair<double, double>>()
{
{1, new List<KeyValuePair<double, double>()
{
{ 0.990, 0.0316 },
{ 0.975, 0.0398 }
}
},
...
}