[英]Dictionary within another dictionary + Multiple values for one key
我想做一个包含另一个字典的字典。 而且我希望我的字典仅对一个键具有多个值,但是我得到一个错误:“具有相同键的元素已经存在”。 我已经在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 } } },
};
我尝试解决LordTakkera的问题。
我这样做是因为我必须代表KHI2表。 我在JAVA中执行此操作,并且我的软件可以完美运行,但是我不知道如何在.NET中使用REF。
在有重复键的地方(如下所示),您希望所有这些值都在一个内部字典中。
{ 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
}, ........ }}
正如错误所提示的,在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 }
}
},
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.