[英]Ruby : Extract Key and Value from hash
我有很多哈希值,在提取key
和value
遇到了麻烦。 该数组如下所示:
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.