arrays - 在范围和计数的散列中对整数数组进行分组

标签 arrays ruby hash grouping

我有一个这样的整数数组:

  [1, 1, 1, 2, 2, 4, 4, 5, 6, 11, 11, 12, 15, 22, 23, 23, 23, 31, 32, 32]

我正在尝试将其转换为散列,根据范围以 10.... 为间隔进行分组。

所以,在这种情况下会是

{ [1..10] => 9, [11..20] => 4, [21..30] => 4, [31..40] => 3 }

我已经尝试了一些还没有接近的东西,所以把它们放在这里有点毫无意义。我可以将数组转换为范围

  [1, 1, 1, 2, 2, 4, 4, 5, 6, 11, 11, 12, 15, 22, 23, 23, 23, 31, 32, 32].sort.uniq.inject([]) do |spans, n|
    if spans.empty? || spans.last.last != n - 1
      spans + [n..n]
    else
      spans[0..-2] + [spans.last.first..n]
    end
   end

但这不是我要找的。有什么建议吗?

最佳答案

Hash[
  your_array.group_by{|i| i / 10}.map{|k,v|
    [(k*10+1..(k+1)*10), v.count]
  }
]
#=> {1..10=>9, 11..20=>4, 21..30=>4, 31..40=>3}

关于arrays - 在范围和计数的散列中对整数数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38691778/

相关文章:

c++ - (C++14) lambda 数组 : error: 'name' declared as array of 'auto'

python - 如何在 numpy 中搜索满足条件的索引?

ruby - 我可以有条件地跳过在同一个文件中加载 "further"ruby​​ 代码吗?

python - 如何将python字符串和整数数组相乘

c - 如何返回每个函数实例大小不同的 VLA?

ruby-on-rails - 开始使用 Ruby on Rails、Web 服务和 OAuth

ruby-on-rails - 脚手架一代

csv - 读取CSV解析数据并存储在Hash中

python - 在python中计算文件的crc

javascript - 在检查每个键、值对 Javascript 的同时遍历 Hashtable