我有这个数组:
a = [[4, 5, 59708], [6, 5, 93676], [8, 9, 3800], [8, 12, 3200], [8, 15, 6400], [8, 18, 400], [8, 20, 3200], [8, 21, 1838], [10, 11, 200], [10, 16, 100], [10, 17, 3200], [10, 19, 1400], [13, 14, 7344]]
现在我需要将这个数组拆分成两个数组(top_3和rest)。
前3名应包含每个索引0的前3个条目。排名应基于索引2。
top_3 = [
[6, 5, 93676], # (93676) Only one entry for index(0) == 6
[4, 5, 59708],
[8, 15, 6400], # (6400, 3800, 3200) top 3 for index(0) == 8
[8, 9, 3800], #
[8, 20, 3200], #
[10, 11, 200],
[10, 17, 3200],
[10, 19, 1400],
[13, 14, 7344]]
不在前3位的其他值应存储在另一个数组中:
rest = [[8, 18, 400], [8, 12, 3200], [8, 21, 1838], [10, 11, 200], [10, 16, 100]]
答案 0 :(得分:1)
你的问题很难遵循,但我会尝试类似的事情:
top3 = a.group_by(&:first).map{|a,b| b.sort_by(&:last).last(3)}.flatten(1)
lower = a - top3