如何在Ruby中展平嵌套哈希

Tin*_*n81 0 ruby hash

压扁此哈希的最快方法是什么:

REGIONS = {
  :au => {
    'Australian Capital Territory' => 'ACT',
    'New South Wales' => 'NSW',
  },
  :ca => {
    'Alberta' => 'AB',
    'British Columbia' => 'BC',
  }
}
Run Code Online (Sandbox Code Playgroud)

从而使:au:ca密钥将被删除,我也得到:

{
  'Australian Capital Territory' => 'ACT',
  'New South Wales' => 'NSW',
  'Alberta' => 'AB',
  'British Columbia' => 'BC'
}
Run Code Online (Sandbox Code Playgroud)

我可以合并这样的哈希:

REGIONS[:au].merge(REGIONS[:ca])
Run Code Online (Sandbox Code Playgroud)

但我不能在这里这样做,因为哈希键的名称会经常更改.

Ale*_*kin 6

REGIONS.values.reduce(&:merge)
Run Code Online (Sandbox Code Playgroud)