[英]Print hash in ruby with indentation for each line
我正在尝试以以下格式在ruby中打印字符串和整数的哈希值:
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
puts x
输出应如下所示:
abc 12
abcdef 44
sryyy 5
我可以获得每个字符串的最大长度,然后根据它缩进每一行,但是有没有更简单的方法呢? 还是已经有这样做的方法?
或稍作更新@engineersmnky,您可以通过以下方式实现:
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
x.each do |key, value|
p "#{key.rjust(x.keys.max_by(&:length).length)} #{value}"
end
> abc 12
> abcdef 44
> sryyy 5
给出这个例子。 我认为只要找到最大长度并使用sprintf填充即可,例如
def justified_printing_hash(h)
max_length = h.keys.max_by(&:length).length
h.each {|k,v| puts sprintf("%<key>#{max_length}s %<value>d",{key:k,value:v}) }
end
用法为
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
justified_printing_hash(x)
abc 12
abcdef 44
sryyy 5
#=> {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.