Ruby on rails 按哈希表中的值排序-Ruby
我有以下几个国家:Ruby on rails 按哈希表中的值排序-Ruby,ruby-on-rails,ruby,hashtable,Ruby On Rails,Ruby,Hashtable,我有以下几个国家: COUNTRIES = { 'Albania' => 'AL', 'Austria' => 'AT', 'Belgium' => 'BE', 'Bulgaria' => 'BG', ..... } 现在,当我输出散列时,值不是按字母顺序排列的,而是按无意义的顺序排列的(至少对我来说) 如何输出按字母顺序排列的哈希值?哈希值没有内部顺序。不能对哈希进行就地排序,但可以使用该方法生成键和值的排序数组 您可以将其与一个函数相结合
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
.....
}
现在,当我输出散列时,值不是按字母顺序排列的,而是按无意义的顺序排列的(至少对我来说)
如何输出按字母顺序排列的哈希值?哈希值没有内部顺序。不能对哈希进行就地排序,但可以使用该方法生成键和值的排序数组 您可以将其与一个函数相结合,以所需的顺序对哈希进行迭代 例如:
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
}
COUNTRIES.sort {|a,b| a[1] <=> b[1]}.each{ |country| print country[0],"\n" }
国家={
“阿尔巴尼亚”=>“阿尔”,
“奥地利”=>“在”,
“比利时”=>“比利时”,
'保加利亚'=>'保加利亚',
}
COUNTRIES.sort{a,b{a[1]b[1]}。每个{country}打印国家[0],“\n}
按整件事使用sort\u会变得更加简洁。加号puts自动添加“\n”:
COUNTRIES.sort_by { |k, v| v }.each { |country| puts country[0] }