无法获得正确的格式

时间:2012-02-26 23:45:31

标签: ruby

我有一个看起来像这样的哈希

products = {199 =>['Shoes', 59.99], 211 =>['Shirts', 19.99], 245 =>['Hats', 25.99], 689 => ['Coats', 99.99], 712 => ['Beanies', 6.99]}

products = item number => [product,price]

我的目标是打印哈希值中的最高价和最低价。到目前为止,我得到的是:

products = {199 =>['Shoes', 59.99], 211 =>['Shirts', 19.99], 245 =>['Hats', 25.99], 689 =>['Coats', 99.99], 712 => ['Beanies', 6.99]}

max_value = products.max_by { |key, value| value[1] }.to_s
    print max_value

min_value = products.min_by { |key, value| value[1] }.to_s
     print min_value

当我打印出来时,它看起来像这样。

 ["689", ["Coats", 99.99]]
["712", ["Beanies", 6.99]]

我希望它看起来像这样

Item# 689: Coats, 99.99
Item# 712: Beanies, 6.99

有人对我有任何提示吗?

感谢你的帮助,我想通了。非常感谢。这给了我正是我想要的东西。

min_value = products.min_by { |value| value[1] }
puts "Item# #{min_value[0]}: #{min_value[1][0]}, #{min_value[1][1]}"

max_value = products.max_by { |value| value[1] }
puts "Item# #{max_value[0]}: #{max_value[1][0]}, #{max_value[1][1]}"

OOps,没关系。正确的代码是这个

min_value = products.min_by { |key, value| value[1] }
puts "Item# #{min_value[0]}: #{min_value[1][0]}, $#{min_value[1][1]}"

max_value = products.max_by { |key, value| value[1] }
puts "Item# #{max_value[0]}: #{max_value[1][0]}, $#{max_value[1][1]}"

1 个答案:

答案 0 :(得分:2)

假设max是第二个数组,min是第一个:

puts "Min Item\# #{min[0]}: #{min[1][0]}, #{min[1][1]}"
puts "Max Item\# #{max[0]}: #{max[1][0]}, #{max[1][1]}"

通常,Ruby中的基本格式化可以使用双引号字符串中的字符串插值运算符#{}来完成。在调用to_s之后,运算符将自身替换为包含的表达式的最终值。例:

puts "Four plus four = #{4+4}"

4+4的值为88.to_s = "8",因此插入字符串"8",生成最终字符串"Four plus four = 8"

对于模式复杂格式,您将使用sprintf,但这是一个很大的功能,您可以自己调查。