You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure如何将同key的map列表转换为对应值的出现频率统计map

Clojure实现多map列表的取值频率统计

实现思路

  • 第一步:提取列表中所有map指定key的对应值,得到值序列
  • 第二步:使用Clojure内置的frequencies函数统计值序列中各元素的出现次数
  • 第三步:将统计结果中的数字键转换为关键字格式,匹配预期输出

完整实现代码

;; 示例输入
(def input '({:a 1} {:a 1} {:a 2} {:a 2} {:a 3} {:a 2}))

;; 单行实现
(reduce-kv (fn [m k v] (assoc m (keyword (str k)) v)) 
           {} 
           (frequencies (map :a input)))

;; 封装为通用函数,支持自定义提取key
(defn count-map-values [extract-key coll]
  (reduce-kv (fn [res k cnt]
               (assoc res (keyword (str k)) cnt))
             {}
             (frequencies (map extract-key coll))))

;; 调用示例
(count-map-values :a input)

输出结果

{:1 2, :2 3, :3 1}

内容的提问来源于stack exchange,提问作者Guilherme Umemura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:05