另一个字典中的java字典+一个键的多个值
我想编一本包含另一本词典的词典。我希望我的字典中只有一个键有多个值,但我得到一个错误:“一个具有相同键的元素已经存在”。我已经用JAVA和HashMap做过了,还可以,但是用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 } } },
};
我尝试洛德塔克拉的解决方案
我这样做是因为我必须表示KHI2表。我用JAVA做这个,我的软件工作得很好,但我不知道如何在中使用REF。净
# 1 楼答案
如果您有重复的键,如下面所示,您希望所有这些值都在一个内部字典中
变成:
# 2 楼答案
正如错误所提示的,在C#字典中不能有多个具有相同键的值。这很好,一个重复的键会返回什么值?这充其量只是一种未定义的行为
但是,您正在编写的代码只需进行一次调整即可正常工作:
键可以映射到集合(集合本身可以容纳集合)。从您发布的代码来看,这似乎是最有可能的解决方案。如果我能澄清任何事情,请告诉我
更新:如果保证这些“嵌套”字典中的每一个都只有一个元素,则可以使用另一个答案或KeyValuePair: