我有一个Ruby哈希:

ages = { "Bruce" => 32,
         "Clark" => 28
       }

假设我有另一个替换名散列,有没有一种优雅的方法来重命名所有密钥,这样我就可以得到:

ages = { "Bruce Wayne" => 32,
         "Clark Kent" => 28
       }

推荐答案

ages = { 'Bruce' => 32, 'Clark' => 28 }
mappings = { 'Bruce' => 'Bruce Wayne', 'Clark' => 'Clark Kent' }

ages.transform_keys(&mappings.method(:[]))
#=> { 'Bruce Wayne' => 32, 'Clark Kent' => 28 }

Ruby相关问答推荐

判断数组中的字符串是否包含另一个数组中的子字符串

有没有办法向用户返回 nil 消息但不中断 ruby​​ 中的应用程序?

Sinatra + Bundler?

从 URL 字符串中提取主机的 Ruby 代码

Rubymine - 启用行号

Kernel#gets try 读取文件而不是标准输入

如何在Ruby中从字符串中go 除前导和尾随引号

Encoding::UndefinedConversionError

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

如何使用 yardoc 列出未记录的模块/类/常量/方法?

class_eval <<-"end_eval", __FILE__, __LINE__ 在 Ruby 中是什么意思?

Ruby 中的p是什么?

Ruby 的排序方法使用哪种算法?

如何在 ruby​​ 中解压缩 Gzip 字符串?

什么是匹配不在行尾的字符串的正则表达式?

为什么 Ruby 的 Date 类会自动加载,但 DateTime 不会?

为什么 Ruby 没有真正的 StringBuffer 或 StringIO?

Ruby 中的 to_s 与 to_str(以及 to_i/to_a/to_h 与 to_int/to_ary/to_hash)

解析带有标题字段的 CSV 文件作为每行的属性

将 Nokogiri 文档转换为 Ruby 哈希