因此,我在这里得到了我建议的邮政编码地图,它工作得很好。如你所见,我已经加载了数据。
这就是它在repl中的样子,这是完美的。这就是地图
:Year 2020, :Day 27, :January 59, :February 38
:Year 2020, :Day 28, :January 41, :February 57
:Year 2020, :Day 29, :January 56, :February 51
:Year 2020, :Day 31, :January 94, :February -999
:Year 2020, :Day 30, :January 76, :February -999
(map [:Day :Month请记住,这只是我所做的代码片段。你会怎么建议我在一月份找到最高价值的一天?我说的最高数字是指紧挨着月份的数字
(into(sorted-map-by >(fn [:January]))Ha) 我尝试了一下,但没有成功,末尾的"Ha“就是我初始化zipmap并使用io/ read读取文件的函数的名称
发布于 2021-01-15 04:23:35
(def data [{:Year 2020, :Day 27, :January 59, :February 38}
{:Year 2020, :Day 28, :January 41, :February 57}
{:Year 2020, :Day 29, :January 56, :February 51}
{:Year 2020, :Day 31, :January 94, :February -999}
{:Year 2020, :Day 30, :January 76, :February -999}])
(reduce (partial max-key :January) data)
;; => {:Year 2020, :Day 31, :January 94, :February -999}
(:Day (reduce (partial max-key :January) data))
;; => 31发布于 2021-01-15 03:59:07
不确定你的确切数据结构是什么样子,但假设它是一个地图矢量,你可以这样做:
(def data
[{:Year 2020, :Day 27, :January 59, :February 38}
{:Year 2020, :Day 28, :January 41, :February 57}
{:Year 2020, :Day 29, :January 56, :February 51}
{:Year 2020, :Day 31, :January 94, :February -999}
{:Year 2020, :Day 30, :January 76, :February -999}])
(->> data
(sort-by :January)
last
:January)
;; => 94通过使用关键字作为函数对向量进行排序以在映射中查找它的值,然后获取具有一月最高值的向量,然后从该向量中获得属于关键字:January的值。如果您的数据结构看起来有点不同,请告诉我。
发布于 2021-01-15 08:58:11
@Rulle的答案非常好。如果没有max-key,它将是:
(def data [{:Year 2020, :Day 27, :January 59, :February 38}
{:Year 2020, :Day 28, :January 41, :February 57}
{:Year 2020, :Day 29, :January 56, :February 51}
{:Year 2020, :Day 31, :January 94, :February -999}
{:Year 2020, :Day 30, :January 76, :February -999}])
(defn seq-max [seq greater key]
(reduce (fn [a b] (if (greater (key a) (key b)) a b)) seq))
;; if no key is wanted, choose the function `identity` as key!
;; e.g.
;; (seq-max (map :January data) > identity)
;; => 94
(:Day (seq-max data > :January)) ;; => 31https://stackoverflow.com/questions/65725987
复制相似问题