文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何按 Value 对 Dictionary 进行排序?

2024-12-14 00:30

关注

咨询区

我需要对 dictionary 中的value进行排序,这个dictionary是由key和value组成,举个例子:我有一个 word 和相应单词 频次 的hash对,现在我想按照 频次 对 word 进行排序。

我想使用 SortList 实现,但它只能实现单值排序,比如存放 频次,但这样我还要通过它反找 word,貌似不好实现,在 .NET 框架中还有一个 SortDictionary ,我发现它只能按照 key 排序,要想硬实现还得定义一些自定义类。

请问是否有更简洁的方式实现?

回答区

要说简洁的方法,可以用 Linq 实现,参考如下代码:

  1. Dictionaryint> myDict = new Dictionaryint>(); 
  2. myDict.Add("one", 1); 
  3. myDict.Add("four", 4); 
  4. myDict.Add("two", 2); 
  5. myDict.Add("three", 3); 
  6.  
  7. var sortedDict = from entry in myDict orderby entry.Value ascending select entry; 

var sortedDict = from entry in myDict orderby entry.Value ascending select entry;

其实用 Linq 可以给我们带来非常大的灵活性,它可以获取 top10, top20,还有 top10% 等等。

如果抽象起来看,除了对 dictionary 进行整体遍历查看每个item之外,你没有任何其他办法,我的做法是将 dictionary 转成 List 然后使用自带的 Sort 方法进行排序,参考如下代码:

  1. Dictionary s = new Dictionary(); 
  2. s.Add("1""a Item"); 
  3. s.Add("2""c Item"); 
  4. s.Add("3""b Item"); 
  5.  
  6. List> myList = new List>(s); 
  7. myList.Sort( 
  8.     delegate(KeyValuePair firstPair, 
  9.     KeyValuePair nextPair) 
  10.     { 
  11.         return firstPair.Value.CompareTo(nextPair.Value); 
  12.     } 
  13. ); 

点评区

要说简单快捷的方式,我觉得除 Linq 之外应该也没啥好方法了,如果要我实现,我大概会这么写。

var ordered = dict.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value);

 

来源:NET技术问答内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯