在字典中查找数字的最接近的下键

分割模式

我有一本字典;

Dictionary<int, float> delta = new Dictionary<int, float>();

其中包含:

0,  45,2345
7,  25,3556
18, 23,2334

如何找到最接近数字的下键?

想象一下,我有数字16,id喜欢找到键7的值。对于4,id类似,喜欢键0的值。

最好我也想以最快的方式做到这一点,因为我必须运行该操作数百万次。

我使用C#、. NET 4。

阿图罗·门恰卡(Arturo Menchaca)

您可以过滤键,只保留较低的键,然后获得最大键:

Dictionary<int, float> delta = new Dictionary<int, float>();
var key = 16;

var maxKey = delta.Keys.Where(k => k < key).Max();
var value = delta[maxKey];

但是,如注释中所述,更好的方法是使用类SortedDictionary<>SortedList<>

如果首先运行所有添加/删除操作,然后仅执行搜索,则可以将键转换为数组(O(N))和使用Array.BinarySearch()方法(O(log N)):

SortedDictionary<int, float> sortedDict = new SortedDictionary<int, float>();

// Add-Remove operations

var keys = sortedDict.Keys.ToArray();

// Search operations

int maxKey = Array.BinarySearch(keys, key);
float value = maxIndex >= 0 ? sortedDict[maxKey] : sortedDict[~maxIndex - 1]; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在字典键列表中查找最接近的值Python

来自分类Dev

在数字列表中查找数字对最接近的匹配项的算法

来自分类Dev

查找最接近0的数字

来自分类Dev

从点数组中查找最接近的点

来自分类Dev

从颜色列表中查找最接近的颜色

来自分类Dev

查找与给定数字最接近的k个数字

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

查找与数字中最接近的因子

来自分类Dev

如何在数组中查找最接近给定数字的值

来自分类Dev

在字典C#中查找与给定值最接近的值

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

在AngularJS中查找最接近的元素

来自分类Dev

在Java集合中查找最接近的对象

来自分类Dev

在整数数组中查找最接近的数字

来自分类Dev

使用R中的正则表达式查找最接近特定单词的数字

来自分类Dev

查找大于当前数字的最接近数字的索引

来自分类Dev

查找最接近列表目标和的数字

来自分类Dev

给定一个浮点数,查找列表中还是最接近的数字

来自分类Dev

从点数组中查找最接近的点

来自分类Dev

从许多rect中查找最接近的rect

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

从字典列表中获取最接近的元素

来自分类Dev

查找与给定数字最接近的数字总和

来自分类Dev

在圆形数组中查找最接近的数字

来自分类Dev

在defaultdict中查找最接近的键

来自分类Dev

从行内的 div 中查找最接近的值

来自分类Dev

查找最接近特定数字的数字总和

来自分类Dev

在熊猫数据框中的缺失值中查找最接近的有效数字

Related 相关文章

热门标签

归档