zoukankan      html  css  js  c++  java
  • 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的需求了。

  • 相关阅读:
    选择器的用处
    全栈工程师基础知识与笔记
    9.13日笔记
    9.12笔记
    9.11Css
    学习笔记
    9.10HTLM
    redis和memcached的区别(总结)
    OO第四次博客作业
    OO第三次博客作业
  • 原文地址:https://www.cnblogs.com/ilovewindy/p/3791829.html
Copyright © 2011-2022 走看看