-2

我有一个带有一些键值对的哈希,如下所示:

@level2 = @l2.inject(Hash.new(0)) { |hash,element|
hash[element] +=1
hash }

我根据键对散列执行一些排序。

@level2 = @level2.sort_by { |x, _| x }.reverse

现在我假设 sort_by 给了我一个数组数组。我想把它分成 2 个数组,这样我的第一个数组应该包含所有键,第二个数组应该包含所有值。

hash#keys 和 hash#values 在对哈希进行排序后无法访问。所以这在这种情况下不起作用。

4

2 回答 2

6

无论您如何制作哈希,它都会有一个Hash#keys方法和一个Hash#values. 它们都返回您似乎想要的数组。

keys_array   = @level2.keys
values_array = @level2.values
于 2012-10-19T00:39:10.160 回答
0

您可以遍历数组数组并将每个元素添加到新数组中。这将保持元素的顺序。

keys_array = []
values_array = []
@level2.each do |key, value|
  keys_array << key
  values_array << value
end
于 2013-10-03T20:20:09.227 回答