在简单的直方图中理解Ruby sort_by方法

时间:2015-10-13 15:52:54

标签: ruby

在Codecademy的同时,我对sort_by方法产生了一些困惑。

例如,我的代码中{ |a, b| b }发生了什么?我想象|a, b|,或者你想要它被指定为的任何地方,映射数组的|key, values|,但是通过{{1}对我的新哈希frequencies进行排序意味着什么呢? }?

{ |key, value| value }

3 个答案:

答案 0 :(得分:0)

Hash#sort_by{|key, value| value}(实际定义为Enumerable#sort_by)表示:

  • keyvalue作为关键字和每个键值对的值(由|key, value|表示)和
  • value排序(由value表示。)

答案 1 :(得分:0)

对哈希进行排序时,总是提供两个变量,在本例中为ab,就像您所说的那样,代表键和值。当您仅按第二个变量排序时,表示您只想根据值对哈希进行排序。

在您的示例中,当您按值排序然后将其反转时,您将按照从最频繁到最不频繁的单词的顺序对频率进行排序。

答案 2 :(得分:0)

some_hash = {
  "a" => 2,
  "b" => 3,
  "c" => 1
}

some_hash.sort_by { |key, value| value }

返回

[["c", 1], ["a", 2], ["b", 3]]

sort_by方法将根据您在块中传递的条件进行排序。所以我可以做一些像:

some_hash.sort_by { |key, value| key.start_with?("a") && value > 0 }

这将返回满足这些条件的任何键/值对。

此外,您只能使用sort_by一个参数:

sort_by { |arg| arg }

在管道中传递两个参数允许您分离哈希中的键和值,并按您设置的条件对每个对进行排序。