如何在Ruby中展平嵌套哈希

时间:2018-02-23 15:40:27

标签: ruby hash

平缓此哈希的最快方法是什么:

REGIONS = {
  :au => {
    'Australian Capital Territory' => 'ACT',
    'New South Wales' => 'NSW',
  },
  :ca => {
    'Alberta' => 'AB',
    'British Columbia' => 'BC',
  }
}

以便移除:au:ca键,然后我得到:

{
  'Australian Capital Territory' => 'ACT',
  'New South Wales' => 'NSW',
  'Alberta' => 'AB',
  'British Columbia' => 'BC'
}

我可以合并这样的哈希:

REGIONS[:au].merge(REGIONS[:ca])

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

2 个答案:

答案 0 :(得分:6)

REGIONS.values.reduce(&:merge)

答案 1 :(得分:1)

这是一种在单次迭代中完成的方法。

REGIONS.inject({}){|h, (_, e)| h.merge(e)}