如何按 value 对 dictionary 进行排序?
咨询区
Kalid:
我需要对 dictionary 中的value进行排序,这个dictionary是由key
和value
组成,举个例子:我有一个 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 进行排序?相关推荐
- python dict sorted 排序
我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...
- C# Hashtable和Dictionary区别
Hashtable和Dictionary都是.Net下的表示键值对的集合,那么我们在使用中该选择Hashtable还是Dictionary?下边我们看看他们之间的区别: 1.Dictionary< ...
- python以垂直方式输出_python学习笔记
Author: maddock Date: 2015-03-15 21:42:01 (暂时没有整理) python json文件处理 #coding:utf-8 importjson#data = [ ...
- 个人项目【 完成总结】
一.针对<写在前面>的补充 随着对需求的深入了解,最后抛弃了使用trie树,一是这个数据结构不利于处理大小写敏感的问题,二是最后的排序首先是由出现的次数排的,需要对此树进行遍历也不方便编码 ...
- java转换为c#_将25k行C#转换为Java的经验教训
java转换为c# 由于各种原因,我最近完成了一个将复杂的财务应用程序从C#转换为Java的项目. 港口的原因大部分是非技术性的,而是对相关企业的一项战略举措. 这是一次有趣的经历,我在此过程中吸取了 ...
- python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码
(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2) GET方式提交的数据最多只能有1024 Byte,而P ...
- .net程序员写业务代码需要注意的地方
代码规范要求 1.命名空间规范:dao层的impl实现和接口采用一样的命名空间,到对应文件夹层: IxxDaoContext与其实现类采用顶级命名空间. 2.TableEntity文件夹:所有的实体放 ...
- SQL必知必会1 查询部分 P1-P129
第1课 了解SQL 这一课程介绍SQL究竟是什么,它能做什么事情 1.1 数据库基础 你正在读这本SQL图书,表明你需要以某种方式与数据库打交道.SQL正是用来实现这一任务的语言,因此在学习SQL之前 ...
- taoqick 搜索自己CSDN博客
L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...
最新文章
- IT规划中的技术体系架构
- 不能解决,复选框在request对象获取的信息后显示在用户信息里面为中文的选项名...
- java怎么实现人物的行走,js键盘事件实现人物的行走
- c语言一级考试题目第四季度,模拟试题8套
- [学习笔记]舞蹈链(Dancing Links)C++实现(指针版)
- 再论DataSet与DataFrame的区别
- 从零基础入门Tensorflow2.0 ----五、24TF1.0dataset使用
- 便捷注册live、MSN邮箱
- 有用的各大网站论坛,学习、娱乐、生活...
- 验证牛顿公式的局部收敛性,并找到对于牛顿公式不收敛(发散)的函数,比较二分法与牛顿公式的收敛速度
- 超平面(hyperplane)的定义
- MongoDB之学习【一】:初识Mongo,路远道长,绵绵不绝
- Knowledge-Aware Graph-Enhanced GPT-2 for Dialogue State Tracking论文笔记
- 使用webrtc开发直播系统源码,开发音视频语聊房
- C语言可以应用在哪些领域?
- 纯css控制文字显示隐藏
- 【SPOJ-TSHOW1】Amusing numbers【二进制】
- 有几个ZUCC (20分)
- 常见排序算法总结(实现原理,稳定度,使用场景,时间复杂度)
- 因式分解,输出素数因子及其指数
热门文章
- 《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术
- 使用C#制作简易的注册表编辑器
- C# Global.asax.cs 定时任务
- python网络编程-socket编程
- jquery对json的各种遍历
- android一句话搞定图片加载
- kdbchk: the amount of space used is not equal to block size
- visual studio toolbox 修复
- Mac OS使用技巧之九:Mission Control和DIY自己的Dashboard
- 如何使用Avira Rescue CD清洁感染的PC