我有一个看起来像这样的哈希
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]}"
答案 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
的值为8
,8.to_s
= "8"
,因此插入字符串"8"
,生成最终字符串"Four plus four = 8"
对于模式复杂格式,您将使用sprintf
,但这是一个很大的功能,您可以自己调查。