计算具有特定值的哈希内部的键

时间:2017-10-25 19:59:26

标签: ruby

我有一个看起来像的哈希:

day = {
  :morning => true,
  :afternoon => false,
  :evening => true,
  :night => true
}

我想得到== true

的值的百分比

我现在正在做

sum = day.count.to_f
adherence_percent = (day.select{|k, v| v == true }.count / sum) * 100
:> 66.6666666

我能做到更优雅/更有效吗?

2 个答案:

答案 0 :(得分:2)

如果你知道那里只有真/假值

day.values.count(&:itself)

,否则

day.values.count { |item| item == true }

用法:

sum = day.count.to_f
adherence_percent = day.values.count(&:itself) / sum * 100

答案 1 :(得分:2)

您可以使用countlast

执行此操作
day.count(&:last).fdiv(day.size)

Demonstration