产生异常结果的C#排序字典-Mk2
本文关键字:排序 字典 -Mk2 异常 结果 | 更新日期: 2023-09-27 17:58:56
我认为我在上一个问题中没有发布足够的细节,人们似乎停止了回应,所以我转发了,因为我们需要知道这个问题为什么会发生
我正在使用一个SortedDictionary,当我们循环它时,我们会得到奇怪的结果。
这涉及到很多嵌套,最终的字典实际上是另一个字典的子字典,而另一个是另一个子字典!
是完整的巢。
SortedDictionary<String, SortedDictionary<String, SortedDictionary<int, SortedDictionary<String, String>>>>()
我循环浏览的词典是
SortedDictionary<int, SortedDictionary<String, String>>
这是一个循环:
foreach (SortedDictionary<String, String> cDic in openTrades.Values)
{
String cTimestamp = convertTimestamp(cDic["open"]);
if (!closeTrades.ContainsKey(cDic["key"]) && barArray.ContainsKey(cDic["pair"]))
{
foreach (SortedDictionary<String, String> bDic in barArray[cDic["pair"]][cDic["frame"]].Values)
{
//This is the relative Loop
}
}
}
barArray是我们的主排序词典(这个问题的主题)openTrades是另一个SortedDictionary
现在,当我们用一个整数作为索引在字典中循环时,我们会得到不同的结果——IE。如果我们在循环时用1,2,4作为关键字,它可能会按以下顺序显示它们:4,2,3,这显然没有意义,因为这是一个排序的字典。
如果我在这个问题上遇到困难,我们将不胜感激。谢谢James
我的直觉是你误解了你所看到的结果。在您显示的循环中,您不是在循环int键,而是在循环值列表。因此,您无法确定实际返回int键的顺序。
SortedDictionary本身可能有一些东西,应该指示它属于封闭字典中的哪个int。我想,在形成这些值的过程中存在一些错误,因此键中的int实际上与值不匹配。
我建议缩小问题范围,通过openTrade
而不是openTrades.Values
进行预测。通过这种方式,您将能够在返回的KeyValuePair中看到真正的密钥。我很确定他们会看起来很有条理。