字典的排序

字典为什么要进行排序
有时候我们使用字典是为了方便存储,但对于字典的排序我们比较不常用,有时候迫于项目的需要我们要必须进行排序,例如我最近遇到的一个问题就是,所有我就学习了一些排序的方法分享给大家。

方法一:
这个是我认为比较简单的一个办法。
例如我定义一个比较复杂一点的字典,要对这个字典进学校排序,根据他的value值存储的字符串的多少。

   //要进行排序的字典private Dictionary<string, List<string>> LineBlocks = new Dictionary<string, List<Block>>();//这里假设字典中存有数据//这里把字典转成一个链表,因为字典是没有办法直接进行排序的。List<KeyValuePair<string, List<string>>> Linelist = new List<KeyValuePair<string, List<string>>>(LineBlocks);//利用链表的Sort方法进行排序Linelist.Sort(delegate(KeyValuePair<string, List<string>> s1, KeyValuePair<string, List<string>> s2){//这里决定你的排序顺序是从大大小还是从小到大,我这里的排列顺序是从小到大。如果想改变排序方式,直接对换s1和s2就行了。return s1.Value.Count .CompareTo(s2.Value.Count);});LineBlocks.Clear();foreach (KeyValuePair< string,List<string>> ss in Linelist){LineBlocks[ss.Key] = ss.Value;}

到这里字典被重新排好序了。

这里补充一个将链表里的元素进行反转的方法: LineBlocks.Reverse();

方法二:
这个是我觉得比较的麻烦,不太推荐使用哦。

   //要进行排序的字典private Dictionary<string, List<string>> LineString= new Dictionary<string, List<Block>>();//这里假设字典中存有数据//声明一个类,里面的字段分别存储字典的Key和Valuepublic class MyClass{public   string str;public   List<string>  liststr;}List<MyClass> myclass = new List<MyClass>();foreach (string str in LineString.Keys){MyClass my = new MyClass();my.str= str ;my.liststr= LineString[str];myclass.Add(my);}LineString.Clear();//这里用冒泡排序进行排列顺序MyClass temp;for (int i = 0; i < myclass.Count; i++){for (int j = 0; j < myclass.Count-1-i; j++){if (myclass[j].liststr.Count>myclass[j+1].liststr.Count){temp = myclass[j + 1];myclass[j + 1] = myclass[j];myclass[j] = temp;}}}//这里又给字典进行重新添加foreach (MyClass my in myclass){LineString[my.str]=my.liststr;}

此时字典被重新排好序。是按照value的值进行排序的,从小到大。

C#中字典的排序方法相关推荐

  1. 5种JavaScript中常用的排序方法

    5种JavaScript中常用的排序方法 01.冒泡排序 通过相邻数据元素的交换,逐步将待排序序列变为有序序列,如果前面的数据大于后面的数据,就将两值进行交换,将数据进行从小到大的排序,这样对数组的第 ...

  2. python中字典的查询方法

    python中字典的查询方法包括: 1.直接用key查询,例如dict[key] 返回的就是这个key值对应的value值,如果没有这个key值,则会报错 2.用内置函数items() 返回的就是每一 ...

  3. Python字典的排序方法,你用对了吗

    摘要:排序是个古老的话题,不过对于字典的排序,常常会让 小白手足无措.好像没有找到可以排序字典的函数呢!到底是按key排序,还是按value排序呢?字典到底可不可以按value排序呢?排完序后,还可以 ...

  4. python字典排序方法_Python字典的排序方法一则

    今天需要对Python的字典进行排序,以获得有效的时间序列,采用了如下方法: 首先生成一个示例字典: >>> range_a = random.sample(range(0, 10) ...

  5. 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()

    对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排 ...

  6. java util 排序_Java中常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

  7. Python中列表的排序方法

    一.sort()排序方法 # 这个方法会改变a自身 a = [7,5,9,3] # True为逆序,False为正序 a.sort(reverse = False) print(a) a.sort(r ...

  8. spreadsheet js中创建下拉列表_JS 中创建自定义排序方法

    原文:https://www.youtube.com/watch?v=zVevl-K-m7Y 译者:前端小智 为了保证的可读性,本文采用意译而非直译. 想优质文章请猛戳GitHub博客,一年百来篇优质 ...

  9. Kafka原理——fabric1.0版本中的节点排序方法

    Kafka原理 可参考Zookeeper一起理解,后续自己在项目中实现,会再来补充一些实践的内容. Zookeeper整理:https://blog.csdn.net/yangwei256/artic ...

最新文章

  1. 程序员如何避免“滴滴式裁员”悲剧?
  2. java junit 运行_appium+java+junit demo运行
  3. iOS内存优化及排查方法
  4. 2020第十一届蓝桥杯软件类省赛第二场C/C++ 大学 B 组(题解)
  5. Spring MVC错误处理流程
  6. 怎么设置linux端口权限,Linux下设置端口权限的系统调用—ioperm和iopl
  7. jQuery 的CSS选择器 中 使用变量的方法
  8. [js开源组件开发]js文本框计数组件
  9. 关于“商用超极本应用体验分享沙龙”的体验之旅——商用超极本的崛起之路、真机实测、优缺点分析与使用评价
  10. 网络抖动多少ms算正常_如何测试延时、抖动、丢包率
  11. 计算机自动隐藏桌面图标,Windows 8.1 右下角图标莫名自动隐藏
  12. 银耳椰椰——冲刺计划
  13. 002_Python基础学习网站
  14. 【论文笔记】MV3D:Multi-View 3D Object Detection Network for Autonomous Driving
  15. Calcite的PullUp规则
  16. Linux-Udev机制
  17. 纯千兆电口和自适应电口的区别
  18. 雅可比行列式的实际意义
  19. gsoap 调用 java_Qt5 + gSOAP 调用 Webservice
  20. trueNas/freebsd查看是否开启睿频

热门文章

  1. 普林斯顿算法课作业的python实现(三)Collinear Points
  2. 【电商宝scrm分享】3C类目商家如何玩转社群营销
  3. Matplotlib绘图(基础篇)
  4. PLM系统集成Autovue插件
  5. 鸿蒙系统有点唬人,鸿蒙系统到底是不是唬人的噱头?华为HDC将会揭开真相
  6. 永中Office—怎样给字符添加着重号
  7. Swing的基本组件
  8. 智能验机迭代一年超越竞品,什么方案如此神奇?
  9. 阿瑞斯病毒服务器维护,阿瑞斯病毒请求超时怎么办 登陆超时失败解决方法
  10. html制作小车,HTML5 实现小车动画效果(Canvas/CSS3/JQuery) 付完整源码