我正在根据文本文件中的单词数量构建直方图。我有一个哈希数组,其键是单词,值是单词每行出现的次数。我需要在这个哈希数组上使用sort
方法,以最常出现的单词的顺序对值进行排序。这就是我的排序行:
twoOfArray.sort { |k, v| v <=> k }
twoOfArray.each { |key, value| puts "#{key} occurs #{value} times" "\n"}
完整代码为here。如果我使用sort!
方法,我会得到一个未定义的方法错误。有谁知道为什么?
答案 0 :(得分:0)
我会将您的数据结构(哈希数组)转换为一个大哈希。如果你想对单词进行排序,就没有理由将它们放在单独的哈希中。
然后,如果您的哈希值类似于{'the' => 5, 'and' => 23, 'beer' => 2}
,您可以通过以下方式排序:
> h = {'the' => 5, 'and' => 23, 'beer' => 2}
> a = h.sort {|a, b| b[1] <=> a[1] } # sort converts a hash into an array of arrays.
> a
#=> [['and', 23], ['the', 5], ['beer', 2]]