我有一本字典first<string, double>
double 值的范围在 0 到 1 之间,我想制作另一个只包含 10 个值的字典,但那些距离 0.5 最远的值。首先,我正在考虑制作字典 asc/desc,但是如果这些值在 desc 中是 10 x 0.9,并且在 0.45 左右怎么办。按 asc 顺序,那么我只想获得更高的值,因为 0.45 距离 0.5 仅 0.05,而 0.9 距离中心 0.4。
字典里有没有办法做到这一点,或者我需要像这样循环编码:
abs(first.Value - 0.5) 然后用相同的键将这个值添加到新字典中并使用 .Take(10) ?
最佳答案
var second = first.OrderByDescending(kvp => Math.Abs(kvp.Value - 0.5))
.Take(10)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
关于C# 确定字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142580/