basket = {
"potato wedges" : 4.45 => 2,
"tiramisu : 4.95 => 2,
"diet coke" : 1.75 => 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
一种选择是使用向量方法。
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。正则表达式/(?<=:).+/
读为“匹配一个或多个字符(.+
),紧跟冒号”,(?<=:)
是后面向后看。