如何返回地图中的所有关键字

Xiu*_* Xu 0 dictionary clojure

我想返回地图中出现的所有关键字.例如:

{:a 1 :d 4 :e 4}
Run Code Online (Sandbox Code Playgroud)

我想得到(:a:d:e).我的代码是

(get {:a 1 :d 4 :e 4} :keywords)
Run Code Online (Sandbox Code Playgroud)

它返回零.那么如何解决呢?

Pio*_*dyl 9

我想你想要keys从你的地图中获取所有内容.你可以这样做:

(keys {:a 1, :d 4, :e 4}
;; => (:a :d :e)
Run Code Online (Sandbox Code Playgroud)

如果您希望在地图中显示为关键字时获取所有关键字,filter则只需要匹配keyword?谓词:

(filter keyword? (keys {:a 1, 'd 4, :e 4, "f" 5}))
;; => (:a :e)
Run Code Online (Sandbox Code Playgroud)

类似地,来自地图值的关键字:

(filter keyword? (vals {:a :b, "c" :d, 4 "e", 5 'f}))
;; => (:b :d)
Run Code Online (Sandbox Code Playgroud)