Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按哈希表中的值排序-Ruby_Ruby On Rails_Ruby_Hashtable - Fatal编程技术网

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] }