首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure从zipmap获得最高值

Clojure从zipmap获得最高值
EN

Stack Overflow用户
提问于 2021-01-15 03:51:14
回答 3查看 105关注 0票数 2

因此,我在这里得到了我建议的邮政编码地图,它工作得很好。如你所见,我已经加载了数据。

这就是它在repl中的样子,这是完美的。这就是地图

代码语言:javascript
复制
: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

请记住,这只是我所做的代码片段。你会怎么建议我在一月份找到最高价值的一天?我说的最高数字是指紧挨着月份的数字

代码语言:javascript
复制
(into(sorted-map-by >(fn [:January]))Ha) 

我尝试了一下,但没有成功,末尾的"Ha“就是我初始化zipmap并使用io/ read读取文件的函数的名称

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-15 04:23:35

我会使用max-keyreduce

代码语言:javascript
复制
(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
票数 2
EN

Stack Overflow用户

发布于 2021-01-15 03:59:07

不确定你的确切数据结构是什么样子,但假设它是一个地图矢量,你可以这样做:

代码语言:javascript
复制
(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的值。如果您的数据结构看起来有点不同,请告诉我。

票数 2
EN

Stack Overflow用户

发布于 2021-01-15 08:58:11

@Rulle的答案非常好。如果没有max-key,它将是:

代码语言:javascript
复制
(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)) ;; => 31
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65725987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档