在Codecademy的同时,我对sort_by
方法产生了一些困惑。
例如,我的代码中{ |a, b| b }
发生了什么?我想象|a, b|
,或者你想要它被指定为的任何地方,映射数组的|key, values|
,但是通过{{1}对我的新哈希frequencies
进行排序意味着什么呢? }?
{ |key, value| value }
答案 0 :(得分:0)
Hash#sort_by{|key, value| value}
(实际定义为Enumerable#sort_by
)表示:
key
和value
作为关键字和每个键值对的值(由|key, value|
表示)和value
排序(由value
表示。)答案 1 :(得分:0)
对哈希进行排序时,总是提供两个变量,在本例中为a
和b
,就像您所说的那样,代表键和值。当您仅按第二个变量排序时,表示您只想根据值对哈希进行排序。
在您的示例中,当您按值排序然后将其反转时,您将按照从最频繁到最不频繁的单词的顺序对频率进行排序。
答案 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 }
在管道中传递两个参数允许您分离哈希中的键和值,并按您设置的条件对每个对进行排序。