假設我們有兩個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的需求了。