参考:

https://blog.csdn.net/xing102172/article/details/9163607

For example:

h={'a'=>2, 'c'=>1, 'b'=>3}

sort 方法:

key升序:

h.sort { |a, b|  a[0]<=>b[0] }
[["a", 2], ["b", 3], ["c", 1]]

key降序:

h.sort { |a, b|  b[0]<=>a[0] }
[["c", 1], ["b", 3], ["a", 2]]

value升序:

h.sort { |a, b|  a[1]<=>b[1] }
[["c", 1], ["a", 2], ["b", 3]]

value降序:

h.sort { |a, b|  b[1]<=>a[1]
[["b", 3], ["a", 2], ["c", 1]]

sort_by方法:

value升序:

h.sort_by {|key,value| value}
[["c", 1], ["a", 2], ["b", 3]]

value降序:

h.sort_by {|key,value| -value}
[["b", 3], ["a", 2], ["c", 1]]

key升序:

h.sort_by {|key,value| key}
[["a", 2], ["b", 3], ["c", 1]]

更多参考下面

https://blog.csdn.net/kavin_luo/article/details/72677726

Array 数组的排序

ruby 中数组的用处很多,数组中的元素可以是数字、字符、哈希、数组等

1、单属性排序

a = [1,4,5,7,3,2,8]

a.sort_by do |p|

p

end

输出结果:[1, 2, 3, 4, 5, 7, 8]

a = [{:x=>3,:y=>2,:z=>1},{:x=>3,:y=>1,:z=>3},{:x=>1,:y=>3,:z=>2}]

a.sort_by do |p|

p[:x]

end

输出结果:[{:x=>1, :y=>3, :z=>2}, {:x=>3, :y=>1, :z=>3}, {:x=>3, :y=>2, :z=>1}]

2、多层次排序

a = [{:x=>3,:y=>2,:z=>1},{:x=>3,:y=>1,:z=>3},{:x=>1,:y=>3,:z=>2}]

a.sort_by do |p|

[p[:x],p[]]

end

输出结果:[ {:x => 1, :y =>3, => 2}, {:x => 3, :y =>2, => 1}, {:x => 3, :y => 1, => 3} ]

在Rails里,我们可以用sort_by方法对一个Ruby对象数组按照某个属性 进行排序

User.all.sort_by{|u| u.created_at}

上面的写法等效于

User.all.sort{|a,b| a.created_at <=> b.created_at}

https://blog.csdn.net/a675697174/article/details/51984638

ruby中的Hash排序的更多相关文章

  1. Ruby中的Hash(哈希),你可以理解为字典

    原文链接 以下代码在Ruby 2.5.1中编译通过 定义 myHash = Hash.new myHash1 = Hash["key1" => 100, "key2 ...

  2. mapreduce任务中Shuffle和排序的过程

    mapreduce任务中Shuffle和排序的过程 流程分析: Map端: 1.每个输入分片会让一个map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,当然我们也可以设置 ...

  3. ruby中symbol

    Symbol 是什么 Ruby 是一个强大的面向对象脚本语言(本文所用 Ruby 版本为1.8.6),在 Ruby 中 Symbol 表示“名字”,比如字符串的名字,标识符的名字. 创建一个 Symb ...

  4. PHP中各种Hash算法性能比较

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  5. ruby中的方法查找

    ruby中的方法调用都是 对象.方法 的形式,那么对象如何找到这个方法呢? 首先必须了解祖先链的概念,祖先链就是从一个类开始,到它的父类,再到父类的父类...一直到最终的起点(ruby中是BasicO ...

  6. ruby中的链式访问和方法嵌套

    先看一道题,这道题是codewars上的一道题,我很早就看到了,但是不会写.等到又看到这道题的时候,我刚看完元编程那本书,觉得是可以搞定它的时候了.废话不多说,先看这道题,题目最开始是为JavaScr ...

  7. ruby中的多线程和函数的关键字传参

    1.实现ruby中的多线程 # def test1 # n = 1 # if n > 10 # puts "test1结束" # else # while true # sl ...

  8. Ruby中星号打包解包操作

    Ruby中可以使用一个星号*和两个星号**完成一些打包.解包操作,它们称为splat操作符: 一个星号:以数组为依据进行打包解包(参考文章) 两个星号:以hash为依据进行打包解包(参考文章) 两个星 ...

  9. Ruby 中的闭包-代码块

    看了一片文章https://ruby-china.org/topics/38385讲closure的. 写下一些感想: 闭包就是 一个函数能够记住和存取它的lexical作用域,即使这个函数是在它的l ...

  10. Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)

    前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...

随机推荐

  1. CenterNet:Corner-Center三元关键点,检测性能全面提升 | ICCV 2019

    为了解决CornerNet缺乏目标内部信息的问题,提出了CenterNet使用三元组进行目标检测,包含一个中心关键点和两个角点.从实验结果来看,CenterNet相对于CornerNet只增加了少量推 ...

  2. 【Java】abstract class 和 interface 有什么区别?

    含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象.含有 abstract 方法的类必须定义为 abstract class,abstract class ...

  3. C语言线程安全问题

    线程安全问题 #include <stdio.h> #include <tinycthread.h> #include <io_utils.h> int count ...

  4. 测试开发之前端篇-Web前端简介

    自从九十年代初,人类创造出网页和浏览器后,Web取得了长足的发展,如今越来越多的企业级应用也选择使用Web技术来构建.前面给大家介绍网络协议时讲到,您在阅读这篇文章时,浏览器是通过HTTP/HTTPS ...

  5. #模拟#洛谷 2327 [SCOI2005]扫雷

    题目 分析 考虑最多只有两种情况,因为确定一个位置其它位置随即也能确定, 那么指定第一个位置有没有雷然后判断一下后面推出的雷数是否为0或1,不是显然不行 代码 #include <cstdio& ...

  6. 小师妹学JavaIO之:文件读取那些事

    目录 简介 字符和字节 按字符读取的方式 按字节读取的方式 寻找出错的行数 总结 简介 小师妹最新对java IO中的reader和stream产生了一点点困惑,不知道到底该用哪一个才对,怎么读取文件 ...

  7. OpenHarmony社区运营报告(2023年7月)

     本月快讯 • 2023年7月28日-29日,全球软件质量&效能大会(简称"QECon")圆满举行,OpenAtom OpenHarmony(简称"OpenHar ...

  8. Python 内置数据类型详解

    内置数据类型 在编程中,数据类型是一个重要的概念. 变量可以存储不同类型的数据,不同类型可以执行不同的操作. Python默认内置了以下这些数据类型,分为以下几类: 文本类型:str 数值类型:int ...

  9. 初学STM32 SDIO (二)

    ​ SD命令由主机发出,以广播命令和寻址命令为例,广播命令是针对与SD主机总线连接的所有从设备发送的,寻址命令是指定某个地址设备进行命令传输. 1.SD命令格式 SD命令格式固定为48bit,都是通过 ...

  10. 一键部署openGauss2.0.1 CentOS 7.6

    一键部署 openGauss2.0.1[CentOS 7.6] 本文档目的是为了帮助高校学生提供基于 CentOS7.6 操作系统,实现 openGauss 数据库一键式安装的脚本. 该脚本执行成功后 ...