【发布时间】:2014-11-10 06:23:08
【问题描述】:
刚开始学习 Clojure,所以我想我的主要问题是我不知道如何正确地制定问题以找到现有的解决方案。我有一张地图:
{[0 1 "a"] 2, [0 1 "b"] 1, [1 1 "a"] 1}
我想将其“转换”为:
{[0 1] "a", [1 1] "a"}
即使用组合键的前两个元素作为新键,第三个元素作为原始映射中具有最高值的键值对的值。
我可以轻松创建一个新的地图结构:
=> (into {} (for [[[x y z] v] {[0 1 "a"] 2, [0 1 "b"] 1, [1 1 "a"] 1}] [[x y] {z v}]))
{[0 1] {"b" 1}, [1 1] {"a" 1}}
但 into 不接受谓词,因此最后一个获胜。我还尝试了 :let 和 merge-with,但似乎无法正确引用地图、消除不需要的对或在处理时替换地图的值。
【问题讨论】:
标签: clojure