Clojure:將兩個list合並成一個map


假設我們有兩個list,分別是:

(def a [“one” “two” “three”])
(def b [1 2 3])

我們要把它們合為一個鍵值對應的map,做法很簡單:

1. 先將a和b合為一個一一對應的list:

(map vector a b) => (["one" 1] ["two" 2] ["three" 3])

2. 然后再將list轉化成為map:

(into {} (map vector a b)) => {"one" 1, "two" 2, "three" 3}

3. 有點像咯,不過怎么把”one”, “two”, “three”轉化成為keyword呢?我們可以使用keyword方法來幫忙,最終成品如下:

1 (into {}
2       (for [[k v]
3             (map vector a b)]
4           [(keyword k) v]))
5 => {:one 1, :two 2, :three 3}

成功!我們通過一個for循環先將(["one" 1] ["two" 2] ["three" 3])轉為([:one 1] [:two 2] [:three 3]),然后再調用into語句,這樣就實現了將兩個list合並成一個map的需求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM