ruby - 从 Ruby 哈希中排序值,忽略大小写

标签 ruby sorting hash

这就是我处理 Ruby 哈希中的值以获得字母数字小写排序输出的方式(极端示例):

myhash = {
  "x" => "zebra",
  "one" => "1",
  "alpeh" => "alpha",
  "lower" => "january",
  "1" => "January",
  "2" => "February",
  "answer" => "42"
}
m = myhash.values
puts m.map{|i| i.downcase}.sort

输出:

1
42
alpha
february
january
january
zebra

这工作正常,我没有遇到任何问题,但想知道是否有我缺少的更简单/更有效的方法?

最佳答案

既然你想修改值(输出小写字符串),我认为你不能做得更好。

如果输出原始值是可以的,只要它们排序良好,你可以使用这个:

 myhash.values.sort_by{|h|h.downcase}

编辑:感谢 Casper,这是一个更紧凑的版本:

myhash.values.sort_by(&:downcase)

编辑:感谢 Mischa,如果你想保留你提供的输出:

myhash.values.map(&:downcase).sort

关于ruby - 从 Ruby 哈希中排序值,忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886671/

相关文章:

ruby-on-rails - App::Application.load_tasks 在哪里定义?

c# - 顶级订单未知的订单列表

python - 如何在获得中间结果的同时在 sqlalchemy 的大表上应用 LIMIT/OFFSET [请阅读下面的详细信息]?

arrays - 需要的公式 : Sort array to array -"zig-zag"

在C中计算结构的哈希值

javascript - 为什么哈希函数左移 5 位?

ruby-on-rails - Ruby 中意外的大小写行为

ruby - 使用 Chef 和 Vagrant 在 Ubuntu 上安装 Ruby 1.9.2

java - 如何将输入字符串的 4 字节哈希创建为十六进制字符串

c# - 我怎样才能有相同的编码字符串?