繁体   English   中英

Ruby:从哈希中提取键和值

[英]Ruby : Extract Key and Value from hash

我有很多哈希值,在提取keyvalue遇到了麻烦。 该数组如下所示:

data = [{"key"=>"Name", "value"=>"Jason"}, {"key"=>"Age", "value"=>"21"},
        {"key"=>"last_name", "value"=>"bourne"}]

如何将其转换为以下哈希数组?

[{"Name"=>"Jason"}, {"Age"=>"21"}, {"last_name"=>"bourne"}]

我能够使用detect

a = d.detect { |x| x["key"] == "Name" }
puts a['value'] 

获取"name"的值,但想知道是否有更好的方法。

我想说,解决此问题的最优雅的方法可能是先将data转换为哈希(假设永远不会有重复的键),如下所示:

data = data.map { |x| [x['key'], x['value']] }.to_h
# => {"Name"=>"Jason", "Age"=>"21", "last_name"=>"bourne"}

#to_h方法期望数组的每个元素都是[key, value]形式的数组,因此#map调用处理data每个元素以将其转换为该形式。

完成此操作后,您可以像访问其他哈希一样简单地访问密钥:

data['Name'] # => "Jason"
data['Age'] # => "21"

如果更改了哈希,则计算不应依赖于哈希的键。

data.map { |h| [h.values].to_h }
  #=> [{"Name"=>"Jason"}, {"Age"=>"21"}, {"last_name"=>"bourne"}] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM