Adn*_*nan 2 ruby ruby-on-rails hashtable
我有以下国家/地区;
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
.....
}
Run Code Online (Sandbox Code Playgroud)
现在,当我输出哈希时,值不按字母顺序排列AL,AT,BE,BG ....而是以无意义的顺序排序(至少对我而言)
如何输出具有按字母顺序排序的值的哈希?
使用sort_by,整个过程变得更加简洁.Plus puts会自动添加"\n":
COUNTRIES.sort_by { |k, v| v }.each { |country| puts country[0] }
Run Code Online (Sandbox Code Playgroud)
哈希没有内部订购.您无法对哈希进行排序,但您可以使用哈希#排序方法生成排序的键和值数组.
您可以将它与Array#相结合,以按所需顺序迭代Hash.
所以,一个例子是:
COUNTRIES = {
'Albania' => 'AL',
'Austria' => 'AT',
'Belgium' => 'BE',
'Bulgaria' => 'BG',
}
COUNTRIES.sort {|a,b| a[1] <=> b[1]}.each{ |country| print country[0],"\n" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |