簡體   English   中英

如何按前2個值對數組進行分組,並將它們對應的數字求和成紅寶石?

[英]How do I group arrays by the first 2 values and sum their corresponding number in ruby?

我遇到了這個問題, 如何在Ruby中對數組進行分組和求和? 並想知道如何將其應用於當前的當前問題。

我有一個多維數組,其值如下:

[[0,0,5],
[0,0,10],
[1,0,4],
[1,0,8],
[1,2,5],
[1,2,6]]

我需要根據第一個和第二個值對每個子數組中的第三個值求和,以獲得以下輸出:

[[0,0,15], [1,0,12], [1,2,11]]

任何想法如何做到這一點? 謝謝您的幫助!

input.group_by { |e| e.take(2) }
     .map { |k, vals| [*k, vals.map(&:last).reduce(:+)] }
#⇒ [[0, 0, 15], [1, 0, 12], [1, 2, 11]]

要么

input.group_by { |e| e.take(2) }
     .map { |k, vals| [k, vals.map(&:last).reduce(:+)] }.to_h
#⇒ {[0, 0]=>15, [1, 0]=>12, [1, 2]=>11}

在這里使用:

使用group_by的方法

inputs.group_by{|x| [x[0], x[1]]}.map{|k, v| [*k, v.map{|z| z[2]}.inject(:+)] }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM