如何获得大于上下三个值的值的键
How to get Key of Value that is greater than three Values above and below
我有一个sortedDict = new SortedDictionary<double,double>();
我正在尝试获取大于上面三个值和下面三个值的值的键,但我不知道如何获取。
sortedDict 看起来像这样:
{
1.10 , 20
1.09 , 75
1.08 , 32
1.07 , 440 ------> This Value is greater than the Values of 3 keys above and below
1.06 , 200
1.05 , 160
1.04 , 130
1.03 , 250 ------> This Value is greater than the Values of 3 keys above and below
1.02 , 62
1.01 , 73
1.00 , 15
}
Output: (How do I get this?)
1.07
1.03
任何帮助将不胜感激。
我删除了之前对 post 的回答。这是执行您要求的工作代码
static void Main(string[] args)
{
var sortedDict = new SortedDictionary<double, double>()
{ {
1.10 , 20 },{
1.09 , 75 },{
1.08 , 32 },{
1.07 , 440},{
1.06 , 200},{
1.05 , 160},{
1.04 , 130},{
1.03 , 250},{
1.02 , 62 },{
1.01 , 73 },{
1.00 , 15 }
};
var totalLen = sortedDict.Count;
for(var i = 0; i < sortedDict.Count; i++)
{
var val = sortedDict.ElementAt(i);
if (i - 3 >= 0 && i + 3 < totalLen)
{
if (
sortedDict.ElementAt(i - 3).Value < val.Value &&
sortedDict.ElementAt(i - 2).Value < val.Value &&
sortedDict.ElementAt(i - 1).Value < val.Value &&
sortedDict.ElementAt(i + 1).Value < val.Value &&
sortedDict.ElementAt(i + 2).Value < val.Value &&
sortedDict.ElementAt(i + 3).Value < val.Value
)
{
Console.WriteLine(val.Key);
}
}
}
}
我有一个sortedDict = new SortedDictionary<double,double>();
我正在尝试获取大于上面三个值和下面三个值的值的键,但我不知道如何获取。
sortedDict 看起来像这样:
{
1.10 , 20
1.09 , 75
1.08 , 32
1.07 , 440 ------> This Value is greater than the Values of 3 keys above and below
1.06 , 200
1.05 , 160
1.04 , 130
1.03 , 250 ------> This Value is greater than the Values of 3 keys above and below
1.02 , 62
1.01 , 73
1.00 , 15
}
Output: (How do I get this?)
1.07
1.03
任何帮助将不胜感激。
我删除了之前对 post 的回答。这是执行您要求的工作代码
static void Main(string[] args)
{
var sortedDict = new SortedDictionary<double, double>()
{ {
1.10 , 20 },{
1.09 , 75 },{
1.08 , 32 },{
1.07 , 440},{
1.06 , 200},{
1.05 , 160},{
1.04 , 130},{
1.03 , 250},{
1.02 , 62 },{
1.01 , 73 },{
1.00 , 15 }
};
var totalLen = sortedDict.Count;
for(var i = 0; i < sortedDict.Count; i++)
{
var val = sortedDict.ElementAt(i);
if (i - 3 >= 0 && i + 3 < totalLen)
{
if (
sortedDict.ElementAt(i - 3).Value < val.Value &&
sortedDict.ElementAt(i - 2).Value < val.Value &&
sortedDict.ElementAt(i - 1).Value < val.Value &&
sortedDict.ElementAt(i + 1).Value < val.Value &&
sortedDict.ElementAt(i + 2).Value < val.Value &&
sortedDict.ElementAt(i + 3).Value < val.Value
)
{
Console.WriteLine(val.Key);
}
}
}
}