clojure中的地图和关键字

时间:2015-03-27 22:14:33

标签: clojure count maps keyword

所以我在我的帖子上查询他们的eid,我得到一个列表:

  

(地图:eid(get-all-posts))

(17592186045421 17592186045438 17592186045440 17592186045540 
 17592186045545 17592186045550 17592186045588 17592186045590 
 17592186045592 17592186045594 17592186045597 17592186045608 
 17592186045616 17592186045721 17592186045866 17592186046045 
 17592186046047 17592186046075 17592186046077 17592186046079 
 17592186046081 17592186046083 17592186046085 17592186046088 
 17592186046149 17592186046158 17592186046170 17592186046174 
 17592186046292 17592186046352 17592186046362 17592186047146 
 17592186047211)

每篇文章都有很多:评分,

  

(get-all-ratings 17592186047211)

({:rating "positive", 
  :rid 17592186047652, 
  :email "vaso@ph"} 
 {:rating "positive", 
  :rid 17592186047756, 
  :email "sova.kua@gmcom"} 
 {:rating "meh", 
  :rid 17592186047725, 
 :email "badger@ton"}) 

想要合并地图,这样我就可以“计算”每个帖子的评分数量。

  

(count(get-all-ratings 17592186047211)

 3

但尝试类似

  

(count(map get-all-ratings(map:eid(get-all-posts)))

只返回帖子的数量......这是一个很重要的列表,如

(({:rating "plus", :rid 7175 ..}
  {:rating "plus" :rid 7374})
 ({:rating "whatever", :rid 7535})
 ()
 () <some have no ratings
 ({:rating "green", :rid 7152}))

我如何计算次数:评级显示在上面列出的地图列表中?

>(map :rating (map first (map get-all-ratings (map :eid (get-all-posts)))))

是我一直在玩的东西,它会返回一个列表,但正如您可能知道的那样,它只返回一个:每个帖子的扩展评分图中的评分字段。

编辑: 我刚才注意到像

这样的东西
({:rating 5}
 {:rating 3}
 {:rating 7})

变成

 {:rating 7} 

...无视列表中的其他条目。怎么样?

0 个答案:

没有答案