将单字符串向量映射到 PersistentMap

标签 map vector clojure

我正在尝试通过 HashMap 音译列表,如下所示:

(map {"a" 0 "b" 1 "c" 2} ["a","c","b","a"])

我想吐槽一下:

[0,2,1,0]

我该怎么做?

更正:上面的方法有效,但这不行:

  (map {"a" 0 "b" 1 "c" 2} (vec "acba"))

这里有什么不同?

最佳答案

改用mapv

user=> (map {"a" 0 "b" 1 "c" 2} ["a" "c" "b" "a"])
(0 2 1 0)
user=> (mapv {"a" 0 "b" 1 "c" 2} ["a" "c" "b" "a"])
[0 2 1 0]

还有:

user=> (map {"a" 0 "b" 1 "c" 2} (vec "acba"))
(nil nil nil nil)
user=> (vec "acba")
[\a \c \b \a]
user=> (= \a "a")
false

这行得通(但是是迂回的):

user=> (mapv {"a" 0 "b" 1 "c" 2} (map str (vec "acba")))
(0 2 1 0)

关于将单字符串向量映射到 PersistentMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405784/

相关文章:

JavaScript 传单 map 示例不会显示

jquery - 如何在jQuery中遍历Grails映射

c++ - 访问结构 vector

functional-programming - Clojure 中延迟卷积 fn 的问题

perl - 用哈希值替换数组元素

c++ - 静态 std::map 的奇怪链接器错误

C++: vector 容器和 <algorithm> std::find

c++ - operator+ 和 operator= 的运算符重载 C++

scala - 来自不同服务器的 HTTP 请求/响应

clojure - 我可以避免在 Clojure 解析中进行第二次符号查找吗?