C# 字典获取最小值的键

可能是一个简单的今天给你,但我目前正在兜圈子。考虑这种情况:

可能是一个简单的今天给你,但我目前正在兜圈子。考虑这种情况:

var tempDictionary = new Dictionary<string, int>();
tempDictionary.Add("user 1", 5);
tempDictionary.Add("user 2", 3);
tempDictionary.Add("user 3", 5);
Console.WriteLine(tempDictionary.Min(x => x.Key) + " => " tempDictionary.Min(x => x.Value);

上面返回“用户 1 = & gt;3”。

你将如何返回字典中具有最低值的键?我之后的输出看起来像这样:“user2 = & gt;3”

有什么想法吗?

37
usingmorelinq
var keyR = tempDictionary.MinBy(kvp => kvp.Value).Key;

 var min = tempDictionary.Aggregate((l, r) => l.Value < r.Value ? l : r).Key;
fromHighest value of a Dictionary in C#
15
var keyAndValue = tempDictionary.OrderBy(kvp => kvp.Value).First();
Console.WriteLine("{0} => {1}", keyAndValue.Key, keyAndValue.Value);

如果您的数据集大小不平凡,则可以考虑在 SO 上托管的moreLinq.Here's an implementation中的 MinBy 扩展。

3
Try this one:
var val = tempDictionary.OrderBy(k =>k.Value).FirstOrDefault(); Console.WriteLine(val.Key +" =>"+val.Value);
2

排序效率较低,因为它需要 O(n log n),但选择最小值应该只是 O(n)。

我认为这是一个更简单的方法:

tempDictionary.Where(e => e.Value == tempDictionary.Min(e2 => e2.Value)).First()

使用这个,你甚至可以得到所有的最小值,如果你只是删除.First()

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(832)
如何使用一系列单元格使用“搜索( search_for”函数
上一篇
如何在 Mathematica中定义供以后使用的函数
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(44条)