gpt4 book ai didi

arrays - Ruby——通过键将子数组的值添加到数组中

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:05 25 4
gpt4 key购买 nike

所以我知道如何将数组中的所有值相加。

例如,[1,2,3,4]...的总和

[1,2,3,4].inject(&:+)
#=> 10

但是,我有一个数组数组,我想添加每个子数组的第一个元素相同的值。

# example
[["A", 10],["A", 5],["B", 5],["B", 5],["C", 15], ["C", 15]]

期望的输出:

"(A : 15) - (B : 10) - (C : 30)"

如有任何帮助,我们将不胜感激!

最佳答案

arr = [["A", 10],["A", 5],["B", 5],["B", 5],["C", 15], ["C", 15]]

h = arr.each_with_object(Hash.new(0)) { |(f,g),h| h[f] += g }
#=> {"A"=>15, "B"=>10, "C"=>30}

然后

h.map { |pair| "(%s : %s)" % pair }.join(" - ")
#=> "(A : 15) - (B : 10) - (C : 30)"

你可以这样组合:

arr.each_with_object(Hash.new(0)) { |(f,g),h| h[f] += g }.
map { |pair| "(%s : %s)" % pair }.join(" - ")

参见 Hash::new ,尤其是关于默认值的使用(此处为 0)。

关于arrays - Ruby——通过键将子数组的值添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com