使用Ruby将散列切分为相等的片

使用Ruby将散列切分为相等的片,ruby,Ruby,如何使用ruby将一个散列切片为一个相等的散列切片数组?特别是像这样的事情: 原始散列 a = {:a=>1, :b=>2, :c=>3, :d=>4} 编辑:从下面添加答案以供快速参考。请参阅下文以获得更好的解释 这里有一些代码可以分成两个相等的部分 a.each_slice(2).map{|slice| Hash[slice]} 结果 a = [{:a=>1, :b=>2}, {:c=>3, :d=>4}] 一种方法是: arr = []

如何使用ruby将一个散列切片为一个相等的散列切片数组?特别是像这样的事情:

原始散列

a = {:a=>1, :b=>2, :c=>3, :d=>4}
编辑:从下面添加答案以供快速参考。请参阅下文以获得更好的解释

这里有一些代码可以分成两个相等的部分

a.each_slice(2).map{|slice| Hash[slice]}
结果

a = [{:a=>1, :b=>2}, {:c=>3, :d=>4}]
一种方法是:

arr = []
a.each_slice(2) {|s| arr << Hash[s]}
或更简单:

def slice( a, n )
    a.each_slice(n).inject([]) {|a, p| a << Hash[p]}
end
def切片(a,n)
a、 每个切片(n)。注入([]){| a,p | a一种方法:

arr = []
a.each_slice(2) {|s| arr << Hash[s]}
或更简单:

def slice( a, n )
    a.each_slice(n).inject([]) {|a, p| a << Hash[p]}
end
def切片(a,n)

a、 每个切片(n)。注入([]){| a,p | a谢谢,这是一个简单而优雅的解决方案。谢谢,这是一个简单而优雅的解决方案。@newusername这里不必担心。它说明了Ruby的一些好的方面。steenslag抓住了
映射
的想法,所以这确实是最理想的解决方案。我只是没有马上想到。@newusername这里不必担心。它说明了一些好的方面Ruby.steenslag的aspects抓住了
map
的思想,因此这确实是最理想的解决方案。我只是没有马上想到这一点。:)