【问题标题】:How does Enumerable#sort_by method work?Enumerable#sort_by 方法是如何工作的?
【发布时间】:2013-07-30 16:47:51
【问题描述】:

谁能弄清楚这是如何工作的?

frequencies = frequencies.sort_by { |a, b| b}   

我知道它改变了哈希的显示顺序,但我不知道它是如何做到的。

感谢任何帮助。

【问题讨论】:

  • sort_by 使用 Randal Schwartz 在 Perl 中流行的一种技术,通常称为“Schwartzian Transform”。它预先计算一个中间值,该中间值与实际值相关联,中间值用于排序。如果需要任何计算,它比普通的sort 更快,尤其是在处理复杂对象时。对于简单的对象,例如整数、字符和字符串,sort 通常会在速度方面远离sort_by

标签: ruby hashmap


【解决方案1】:

Enumerable#sort_by 根据给定块的返回值排序。 从您的示例中,frequencies 看起来像一个哈希。

这里是一个哈希排序的例子

 h = {:a => 2, :b => 1, :c => 4}
 #=> {:a=>2, :b=>1, :c=>4}

 h.sort_by {|k, v| v}
 #=> [[:b, 1], [:a, 2], [:c, 4]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2011-02-07
    • 2016-07-05
    • 1970-01-01
    • 2013-03-11
    • 2019-05-20
    • 2012-04-21
    相关资源
    最近更新 更多