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

在Ruby中,如何根据键和值将哈希拆分为两个数组?,ruby,arrays,hash,Ruby,Arrays,Hash,所以我试图将一个散列分成两个数组,一个带键,一个带值 到目前为止,我已经: hash = { Matsumoto: "Ruby", Ritchie: "C", Backus: "Fortran", McCarthy: "Lisp" } 我可以用键或值组成一个数组,如下所示: hash.map { |creator, proglang| creator } 但是我无法创建两个数组,一个包含键,一个包含值。我已经尝试了很多方法,但现在我不知所措 谢谢。您可以参考哈希类方法: keys, valu

所以我试图将一个散列分成两个数组,一个带键,一个带值

到目前为止,我已经:

hash = { Matsumoto: "Ruby", Ritchie: "C", Backus: "Fortran", McCarthy: "Lisp" }
我可以用键或值组成一个数组,如下所示:

hash.map { |creator, proglang| creator }
但是我无法创建两个数组,一个包含键,一个包含值。我已经尝试了很多方法,但现在我不知所措


谢谢。

您可以参考哈希类方法:

keys, values = hash.keys, hash.values

 > keys
 # => [:Matsumoto, :Ritchie, :Backus, :McCarthy] 
 > values
 # => ["Ruby", "C", "Fortran", "Lisp"] 
hash.keys
hash.values
分别返回键和值的数组


有关详细信息,请参考哈希类方法:

hash.keys
hash.values
keys, values = hash.to_a.transpose
  #=> [[:Matsumoto, :Ritchie, :Backus  , :McCarthy],
  #    ["Ruby"    , "C"     , "Fortran", "Lisp"   ]] 
分别返回键和值的数组

看 欲知详情

keys, values = hash.to_a.transpose
  #=> [[:Matsumoto, :Ritchie, :Backus  , :McCarthy],
  #    ["Ruby"    , "C"     , "Fortran", "Lisp"   ]] 
也可以工作,但是为这个任务提供了
keys()
values()


同样有效,但是为这项任务提供了
keys()
values()

谢谢。正如我在Ruby中经常发现的那样,答案比我想做的要简单得多非常感谢。正如我在Ruby中经常发现的那样,答案比我想做的要简单得多是的,我也在读转置法。Ruby中有很多有用/有趣的内置方法。是的,我也在读转置方法。Ruby中有很多有用/有趣的内置方法。