如何根据Ruby中的键和值将哈希拆分为两个数组?

时间:2014-03-21 17:07:12

标签: ruby arrays hash

所以我试图将Hash拆分为两个Arrays,一个包含键,另一个包含值。

到目前为止,我有:

hash = { Matsumoto: "Ruby", Ritchie: "C", Backus: "Fortran", McCarthy: "Lisp" }

我可以用键这样的数组来制作数组:

hash.map { |creator, proglang| creator }

但是我无法制作两个数组,一个包含键和键,其中一个包含值。我玩了很多方法,但我很茫然。

谢谢。

3 个答案:

答案 0 :(得分:4)

keys, values = hash.keys, hash.values

 > keys
 # => [:Matsumoto, :Ritchie, :Backus, :McCarthy] 
 > values
 # => ["Ruby", "C", "Fortran", "Lisp"] 

答案 1 :(得分:1)

您可以参考Hash类方法:

hash.keys
hash.values

分别返回键和值的数组

请参阅 http://www.ruby-doc.org/core-2.1.0/Hash.html 了解更多详情

答案 2 :(得分:0)

keys, values = hash.to_a.transpose
  #=> [[:Matsumoto, :Ritchie, :Backus  , :McCarthy],
  #    ["Ruby"    , "C"     , "Fortran", "Lisp"   ]] 

也有效,但为此任务提供了keys()values()