我有以下国家哈希值;
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
.....
}
现在,当我输出哈希时,值不按字母顺序排列AL,AT,BE,BG ....而是以无意义的顺序排序(至少对我而言)
如何输出具有按字母顺序排序的值的哈希?
答案 0 :(得分:8)
使用sort_by,整个过程变得更加简洁。 Plus puts会自动添加“\ n”:
COUNTRIES.sort_by { |k, v| v }.each { |country| puts country[0] }
答案 1 :(得分:7)
哈希没有内部订购。您无法对Hash进行排序,但您可以使用Hash#sort方法生成已排序的键和值数组。
您可以将其与Array#each结合使用,以按所需顺序迭代哈希。
所以,一个例子是:
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
}
COUNTRIES.sort {|a,b| a[1] <=> b[1]}.each{ |country| print country[0],"\n" }