我使用以下哈希在PDF中创建表:
percentages = {
"group one" => 0.2,
"group two" => 0.6666666666666666,
"group three" => 0.2,
"group four" => 0.03333333333333333,
"group five" => 0.03333333333333333,
"group six" => 0.06666666666666667
}
我在哈希键和值上调用.transpose
:
[percentages.keys, percentages.values].transpose
这可以按预期工作,但我现在需要将小数转换为百分比。而不是.2
,我需要显示20%。而不是0.06666666666666667
,我需要显示7%。
有没有一种干净的方法可以在不改变原始哈希/创建新哈希的情况下执行此操作?
答案 0 :(得分:4)
你可以尝试
[percentages.keys, percentages.values.map {|x| (x * 100).round.to_s + '%'}].transpose
它只需要取每个值并乘以100(转换为百分比),调用round
(删除小数,即6.666667 -> 7
),然后调用to_s
将其转换为一个字符串并连接到'%'
。
答案 1 :(得分:3)
percentages.map{|k, v| [k, "#{(v * 100).round}%"]}
答案 2 :(得分:2)
另一种方式,使用zip而不是转置:
percentages.keys.zip percentages.values.map {|v| "#{(100*v).round.to_s}%"}
# => [["group one", "20%"], ["group two", "67%"], ["group three", "20%"],
# ["group four", "3%"], ["group five", "3%"], ["group six", "7%"]]
答案 3 :(得分:0)