我有一个地图列表,其中每个键与一个字符串列表相关联.
我想将这些字符串列表中的每一个转换为集合.
(def list-of-maps-of-lists '({:a ["abc"]} {:a ["abc"]} {:a ["def"]} {:x ["xyz"]} {:x ["xx"]}))
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我最好的尝试:
(flatten (map (fn [amap] (for [[k v] amap] {k (set v)})) list-of-maps-of-lists))
=> ({:a #{"abc"}} {:a #{"abc"}} {:a #{"def"}} {:x #{"xyz"}} {:x #{"xx"}})
Run Code Online (Sandbox Code Playgroud)
这个问题的惯用解决方案是什么?
我更喜欢使用fmap函数解决此类问题clojure.contrib
:
(map (partial fmap set)
list-of-maps-of-lists)
Run Code Online (Sandbox Code Playgroud)
更新:根据此迁移指南,fmap
已移至algo.generic库的clojure.algo.generic.functor命名空间。
归档时间: |
|
查看次数: |
193 次 |
最近记录: |