将单个字符串的向量映射到PersistentMap

将单个字符串的向量映射到PersistentMap,map,vector,clojure,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

我试图通过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]
此外:

这是可行的(但是迂回的):


(mapv{“a”0“b”1“c”2}(map str“acba”)
在最后一个示例中已经足够了——您只需要一个字符串序列,而不是字符。只是为了好玩:如果您使用关键字:
((apply juxt[:a:c:b:a]){:a 0:b 1:c 2}
@tobereplace同意-我也会想到这一点。我只是在研究提问者的例子。@Kyle-因为关键字也是从映射返回相应值的函数。很好!:)
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)