如何按 value 对 dictionary 进行排序?

咨询区

  • 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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 批量下载网页图片_Python实现多线程批量下载图片

《派森》(Python)3.13 win32 英文安装版 类型&#xff1a;编程工具大小&#xff1a;21M语言&#xff1a;英文 评分&#xff1a;8.7 标签&#xff1a; 立即下载 爬取图片可真的是一个可遇不可求的机会。 有需求就会动力。 目标&#xff1a;爬取某个网站上n多页的链接&#xff0c…

MYSQL,Oracle,SQL数据库在JSP中的驱动

MYSQL,Oracle,SQL数据库在JSP中的驱动 datasource.urljdbc:mysql://localhost:3306/bbscs6?useUnicodetrue&characterEncodingUTF-8 datasource.usernameroot datasource.passwordroot Oracle datasource.driverClassNameoracle.jdbc.driver.OracleDriver datasource.urlj…

linux中获取redis的map,深入Redis之 bitmap位图和HyperLogLog(五)

bitmap位图我们知道一个字符占1个字节&#xff0c;也就是8个位例如set name bigbig字符串中的3个字符的ASCII码为98 105 113所以big转为二进制就是&#xff1a;01100010|01101001|01100111b i g占了3个字节的大小&#xff0c;一共24个位。bitmap位图可以帮我们获取…

Hibernate简单例子以及笔记

先创建Person类&#xff0c;代码如下&#xff1a;(Person.java)import java.util.*;public class Person {public int id;public String name;public String password;public Date birthday;public Person() {}public Person(String name, String password, Date birthday) {su…

想象中的同居生活 VS 真实的同居生活

1 长颈鹿是怎么喝水的2 为了防止雨伞被偷设计师还是真动了不少脑筋呢-3 睡在这样的床上&#xff0c;晒着太阳&#xff0c;肯定超赞4 如何阻止猫咪上楼5 想象中的同居生活 VS 真实的同居生活 6 硬生生把苹果削成吃不饱也吃不起的样子7 来来来准备瓜子杏仁你点的每个赞&#xff…

英语时态的性趣学法

学英语要从性趣开始 一般现在时:I make love with her everyday.一般过去时:I made love with her yesterday.一般将来时:I will make love with her tomorrow.现在进行时:I am making love with her过去进行时:I was making love with her at this time yesterday将来进行时:I…

抽丝剥茧!Source Generators原理讲解

前言前段时间&#xff0c;我们已经用Source Generators实现了好多功能&#xff0c;比如AutoMapper、API最佳实践。你看完那些实现代码&#xff0c;是不是还有点云里雾里&#xff01;Source Generators到底是怎么做到的&#xff1f;基础知识Source Generators是编译过程的一部分…

python跟java 效率_Python和Java该如何选择?老男孩Python人工智能

编程是很多人都想要掌握的技术&#xff0c;但是在行业之中编程语言有很多种&#xff0c;每个人的爱好&#xff0c;想要从事领域不同&#xff0c;自然选择也是不同&#xff0c;比较常见的编程语言就是Python和Java&#xff0c;那么对于这两种语言选择哪个好? 老男孩教育在这里为…

GPON技术概述

GPON技术转载自《电子发烧友》。文章链接请见&#xff1a;http://www.elecfans.com/article/88/171/2009/2009050556028.htmlGPON技术详述介绍GPON 技术之前&#xff0c;先介绍目前也被应用的另一种PON 技术“EPON”。1&#xff0e;EPON技术介绍EPON 又名 GEPON&#xff0c;是由…

linux中断处理汇编入口,Linux中断处理体系结构分析(一)

中断也是一种异常&#xff0c;之所以把它单独的列出来&#xff0c;是因为中断的处理与具体的开发板密切相关&#xff0c;除一些必须、共用的中断(比如系统时钟中断、片内外设UART中断)外&#xff0c;必须由驱动开发者提供处理函数。内核提炼出中断处理的共性&#xff0c;搭建一…

IOS开发学习的有用链接

iOS学习之 plist文件的读写

[转]C/C++ 文件读写操作总结

在编程的过程中&#xff0c;文件的操作是一个经常用到的问题&#xff0c;在CBuilder中&#xff0c;可以使用多种方法对文件操作&#xff0c;下面我就按以下几个部分对此作详细介绍&#xff0c;就是&#xff1a; 1、基于C的文件操作&#xff1b; 2、基于C的文件操作&#xff1b;…

没有违反GPL,他们真的给了源码

文 | Travis出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;【前情回顾】国内智能设备制造商 UMIDIGI 因违反 GPLv2 协议引发争议&#xff0c;并告知开发者“想要源码上门自取”。而后&#xff0c;知名科技博主 Naomi Wu&#xff08;机械妖姬&#xff09…

有朋友问我为什么这么帅

1 2 重庆的朋友告诉我这是微辣3 我就说我只是虚胖&#xff0c;这下你相信了吧&#xff1f;4 这明明就是打情骂俏好嘛5 这还是那个平常瓶盖都拧不开的女孩子吗6 被一个机器人撩到了&#xff01;7 这是什么原理&#xff1f;你点的每个赞&#xff0c;我都认真当成了喜欢

python安装详细步骤mac_Mac安装python3的方法步骤

Python有两个版本&#xff0c;一个是2.x版&#xff0c;一个是3.x版&#xff0c;这两个版本是不兼容的。 现在 Mac 上默认安装的 python 版本为 2.7 版本&#xff0c;若 安装 新版本需要 通过 该地址进行下载&#xff1a; https://www.python.org/ftp/python/3.5.0/python-3.5.0…

在Excel中实现下拉列表选择录入

我们在用Excel录入表格数据时&#xff0c;常常会遇到某列数据的值只在几个固定值中选择一个的情况&#xff0c;比如&#xff1a;人的性别列只可能录入男或女&#xff0c;对学历列只可能录入高中、大专、本科、研究生之一等。遇到这类数据&#xff0c;如果我们手工录入&#xff…

二叉搜索树python,代表python中的二叉搜索树

how do i represent binary search trees in python?解决方案class Node(object):def __init__(self, payload):self.payload payloadself.left self.right 0# this concludes the "how to represent" asked in the question. Once you# represent a BST tree li…

c语言输入一个数存数组,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼//从键盘上输入若干整数&#xff0c;并将其存入数组中&#xff0c;并统计输入数据的个数。#include#include#include#includeint sum_num(char [],int []);int cou_num(char [][81],int,int[]);int txt(char [][81],int);//主函数m…

你吃的瓜子仁,真是老奶奶磕出来的?!

全世界只有3.14 % 的人关注了爆炸吧知识本文转载自微信公众号一只学霸&#xff08;ID&#xff1a;bajie203&#xff09;萌萌不是挺爱吃瓜子仁吗有次他吃的时候大毛在旁边看着看着突然想到一个问题吓得我反思了一下自己是怎么和他们考上同个学校的没思考出来吓得我给大家写了这篇…

ASP.NET GridView控件匯出EXCEL-移除控件,只是顯示文本

ASP.NET GridView控件匯出EXCEL-移除控件&#xff0c;只是顯示文本下午 05:10 2011/2/22 將GridView中的TextBox&#xff0c;DropDownList&#xff0c;LinkButton去掉&#xff0c;顯示文本。 public void ClearGridControls(ref Control sourceControl) { for (int i…