[英]C# Determining value in dictionary
我有一个字典first<string, double>
,其双精度值范围在0到1之间,我想制作另一个仅包含10个值的字典,但这些字典距0.5的值最大。 首先,我正在考虑制作字典asc / desc,但是如果值在desc中大约是10 x 0.9,而在0.45左右时该怎么办。 按照升序排列,那么我只想获得更高的值,因为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);
Dictionary<string, double> firstDic = new Dictionary<string, double>();
// fill
Dictionary<string, double> secondDic = (from e in firstDic
let distance = Math.Abs(e.Value - 0.5)
orderby distance descending
select e).Take(10).ToDictionary(e => e.Key, e => e.Value);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.