【问题标题】:Clojure: adding to a mapClojure:添加到地图
【发布时间】:2014-10-21 22:10:48
【问题描述】:

如果我有地图矢量

(def v [{:key1 "value 1" :key2 "value2"} {:key1 "value 3" :key2 "value4"}])

还有一张地图

(def m {:key3 "value2" :key4 "value5"})

如何将映射 m 添加到向量 v 中两个给定键(在本例中为 key2 和 key3)的值相等的所有映射?

预期的结果是这样的:

[{:key1 "value 1" :key2 "value2" :key3 "value2" :key4 "value5"} {:key1 "value 3" :key2 "value4"}]

【问题讨论】:

    标签: vector map clojure


    【解决方案1】:

    如果 key2 和 k3 相等,您希望将每个映射与 m3 合并:

    (map (fn [x] (if (= (:key2 x) (:key3 m)) (merge m x) x)) v)
    

    =>

    ({:key3 "value2", :key2 "value2", :key4 "value5", :key1 "value 1"} {:key2 "value4", :key1 "value 3"})
    

    【讨论】:

    • 是的,mapv 如果结果需要是一个向量。
    • 我还有一个问题,我有这样的情况,vector is (defn v2 []( map #(zipmap (create-keys ["url" "title"]) %) (func -contents ["url" "title"] "//event" data-url))) data-url 在这个问题bit.ly/1x83gYH 和 map 是 (defn v1[] (map #(zipmap (create-keys [" name" "url"]) %) (func-contents ["name" "url"] "//artist" "ws.audioscrobbler.com/2.0/…)))。在这种情况下它不起作用,它无论如何都会添加地图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多