咨询区

  • Kalid

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

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

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

回答区

  • cardden

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


Dictionary<string, int> myDict = new Dictionary<string, int>();
myDict.Add("one", 1);
myDict.Add("four", 4);
myDict.Add("two", 2);
myDict.Add("three", 3);var sortedDict = from entry in myDict orderby entry.Value ascending select entry;

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

  • Michael Stum

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


Dictionary<string, string> s = new Dictionary<string, string>();
s.Add("1", "a Item");
s.Add("2", "c Item");
s.Add("3", "b Item");List<KeyValuePair<string, string>> myList = new List<KeyValuePair<string, string>>(s);
myList.Sort(delegate(KeyValuePair<string, string> firstPair,KeyValuePair<string, string> nextPair){return firstPair.Value.CompareTo(nextPair.Value);}
);

点评区

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


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

如何按 value 对 dictionary 进行排序?相关推荐

  1. python dict sorted 排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  2. C# Hashtable和Dictionary区别

    Hashtable和Dictionary都是.Net下的表示键值对的集合,那么我们在使用中该选择Hashtable还是Dictionary?下边我们看看他们之间的区别: 1.Dictionary< ...

  3. python以垂直方式输出_python学习笔记

    Author: maddock Date: 2015-03-15 21:42:01 (暂时没有整理) python json文件处理 #coding:utf-8 importjson#data = [ ...

  4. 个人项目【 完成总结】

    一.针对<写在前面>的补充 随着对需求的深入了解,最后抛弃了使用trie树,一是这个数据结构不利于处理大小写敏感的问题,二是最后的排序首先是由出现的次数排的,需要对此树进行遍历也不方便编码 ...

  5. java转换为c#_将25k行C#转换为Java的经验教训

    java转换为c# 由于各种原因,我最近完成了一个将复杂的财务应用程序从C#转换为Java的项目. 港口的原因大部分是非技术性的,而是对相关企业的一项战略举措. 这是一次有趣的经历,我在此过程中吸取了 ...

  6. python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

  7. .net程序员写业务代码需要注意的地方

    代码规范要求 1.命名空间规范:dao层的impl实现和接口采用一样的命名空间,到对应文件夹层: IxxDaoContext与其实现类采用顶级命名空间. 2.TableEntity文件夹:所有的实体放 ...

  8. SQL必知必会1 查询部分 P1-P129

    第1课 了解SQL 这一课程介绍SQL究竟是什么,它能做什么事情 1.1 数据库基础 你正在读这本SQL图书,表明你需要以某种方式与数据库打交道.SQL正是用来实现这一任务的语言,因此在学习SQL之前 ...

  9. taoqick 搜索自己CSDN博客

    L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...

最新文章

  1. IT规划中的技术体系架构
  2. 不能解决,复选框在request对象获取的信息后显示在用户信息里面为中文的选项名...
  3. java怎么实现人物的行走,js键盘事件实现人物的行走
  4. c语言一级考试题目第四季度,模拟试题8套
  5. [学习笔记]舞蹈链(Dancing Links)C++实现(指针版)
  6. 再论DataSet与DataFrame的区别
  7. 从零基础入门Tensorflow2.0 ----五、24TF1.0dataset使用
  8. 便捷注册live、MSN邮箱
  9. 有用的各大网站论坛,学习、娱乐、生活...
  10. 验证牛顿公式的局部收敛性,并找到对于牛顿公式不收敛(发散)的函数,比较二分法与牛顿公式的收敛速度
  11. 超平面(hyperplane)的定义
  12. MongoDB之学习【一】:初识Mongo,路远道长,绵绵不绝
  13. Knowledge-Aware Graph-Enhanced GPT-2 for Dialogue State Tracking论文笔记
  14. 使用webrtc开发直播系统源码,开发音视频语聊房
  15. C语言可以应用在哪些领域?
  16. 纯css控制文字显示隐藏
  17. 【SPOJ-TSHOW1】Amusing numbers【二进制】
  18. 有几个ZUCC (20分)
  19. 常见排序算法总结(实现原理,稳定度,使用场景,时间复杂度)
  20. 因式分解,输出素数因子及其指数

热门文章

  1. 《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术
  2. 使用C#制作简易的注册表编辑器
  3. C# Global.asax.cs 定时任务
  4. python网络编程-socket编程
  5. jquery对json的各种遍历
  6. android一句话搞定图片加载
  7. kdbchk: the amount of space used is not equal to block size
  8. visual studio toolbox 修复
  9. Mac OS使用技巧之九:Mission Control和DIY自己的Dashboard
  10. 如何使用Avira Rescue CD清洁感染的PC