汇总哈希-如何添加此哈希中订单的总费用

问题描述 投票:-2回答:2
basket = { 
"potato wedges" : 4.45 => 2,
"tiramisu : 4.95 => 2,
"diet coke" : 1.75 => 2
}

我想对这个哈希值求和-值表示项目数,键中的数字表示价格。我如何计算这些物品的总价格\谢谢您

ruby hash sum
2个回答
2
投票

假设您打算写这样的哈希:

basket = { 
"potato wedges:4.45" => 2,
"tiramisu:4.95" => 2,
"diet coke:1.75" => 2
}

您可以得到这样的总和:

basket.sum {|k,v| k.split(':')[1].to_f * v}
#-> 22.3

0
投票

一种选择是使用向量方法。

h = { 
  "potato wedges:4.45" => 2,
  "tiramisu:4.95" => 2,
  "diet coke:1.75" => 2
}

require 'matrix'

Vector[*h.keys.map { |s| s[/(?<=:).+/].to_f }].inner_product(Vector[*h.values])
  #=> 22.3

请参见Vector::[]String#[]Vector#inner_product。正则表达式/(?<=:).+/读为“匹配一个或多个字符(.+),紧跟冒号”,(?<=:)后面向后看

© www.soinside.com 2019 - 2024. All rights reserved.