0

我有一个查询,它返回表中这些对象分组的对象计数,尽管我之后要做的是首先将值从最高到最低排序,然后将它们分成 10 个组。

到目前为止,我可以将计数值从最大值排序到最小值,或者,如果我将排序注释掉,或者按设定的数字对值进行分区。我想知道我在这里哪里出错了,因为我看不到它。我最初从查询中提取对象的数量,排序,然后尝试将它们划分为我将在稍后阶段索引的数组:

tosort(map(keyword :objectscounted)data)
sorted(sort > tosort)
part(into [] (partition-all 10 sorted))

我也被卡住的地方是使用分区时 - 我需要 10 组值,而不是每组中的 10 个值,这里的任何帮助表示赞赏!提前致谢

4

1 回答 1

1

如果我正确理解了您的问题,您所需要的只是根据您的sorted列表元素计数动态分区:

user> (def v (range 50))
#'user/v
user> (clojure.pprint/pprint (partition-all (/ (count v) 10) v))
((0 1 2 3 4)
 (5 6 7 8 9)
 (10 11 12 13 14)
 (15 16 17 18 19)
 (20 21 22 23 24)
 (25 26 27 28 29)
 (30 31 32 33 34)
 (35 36 37 38 39)
 (40 41 42 43 44)
 (45 46 47 48 49))

当然,如果总元素不能被 10 整除,那么您的结果将有超过 10 个组,除非您有不同的策略在组之间分配元素。

于 2013-11-09T17:28:14.173 回答