Rub*_*oli 0 ruby arrays duplicates
我有以下数组
[1, 2, 3, 4, 5, 1, 2, 5, 3, 4, 2, 3, 1, 3, 2, 2]`
Run Code Online (Sandbox Code Playgroud)
我想找出两件事:
1)每个数字有多少重复?
例如:1次,3次,4次,2次等.
2)找到3个最重复的数字array.
例如:[2, 3, 1]由于2 次重复5次,3 次重复4次,1 次重复3次.
我试过了
arr = [1, 2, 3, 4, 5, 1, 2, 5, 3, 4, 2, 3, 1, 3, 2, 2]
= arr.group_by { |e| e }.map { |e| e[0] if e[1][1] }.compact
Run Code Online (Sandbox Code Playgroud)
但结果不是我想要的: [1, 2, 3, 4, 5]
? arr.group_by { |e| e } # arr.group_by(&:itself) for Ruby >= 2.2
.map { |k, v| [k, v.count] } #? [[1, 3], [2, 5], [3, 4], [4, 2], [5, 2]]
.sort_by { |(_, cnt)| -cnt } #? [[2, 5], [3, 4], [1, 3], [4, 2], [5, 2]]
.take(3) #? [[2, 5], [3, 4], [1, 3]]
.map(&:first)
#? [2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
删除最后三个子句以获得整个未排序的结果.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |