将地图列表“平展”到Clojure中的单个地图?

结石

我想从由jdbc查询返回的地图列表中查找:

'({:series_id 1 :expires_at "t1"} {:series_id 2 :expires_at "t2"})

到单个地图,例如:

{1 "t1" 2 "t2"}

这样一来,我可以expires_at简单地使用series_id整数查找

我到目前为止:

db.core=> (mapcat #((comp vals select-keys) %1 [:series_id :expires_at]) 
                  '({:series_id 1, :expires_at "t1"} {:series_id 2 :expires_at "t2"}))
(1 "t1" 2 "t2")

但这是列表,而不是地图。

我想知道这是否适合减少使用,和/或是否还有其他一些巧妙的方法可以做到。

背风处

您可以将每个图转换成一对,[series_id expires_at]然后将对应的成对序列转换成一个图:

(def l '({:series_id 1 :expires_at "t1"} {:series_id 2 :expires_at "t2"}))
(into {} (map (juxt :series_id :expires_at) l))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章