接下来我的问题是,我有地图列表,例如:
({:id 1 :request-count 10 ..<another key-value pair>..}
{:id 2 :request-count 15 ..<another key-value pair>..}
...)
Run Code Online (Sandbox Code Playgroud)
需要创建带有记录的地图,其中,key是'id'的值,value是'request-count'的值,对于来自prev示例的每个地图,如:
{1 10
2 15
...}
Run Code Online (Sandbox Code Playgroud)
我知道怎么做.我的问题是 - 标准库有实现这个功能吗?或者也许我可以通过组合少量功能实现这一点,而不是"减少"?
使用该juxt函数生成一系列对,然后将它们放入地图中:
(into {} (map (juxt :id :request-count) data))
Run Code Online (Sandbox Code Playgroud)
例:
user=> (def data [{:id 1 :request-count 10 :abc 1}
#_=> {:id 2 :request-count 15 :def 2}
#_=> {:id 3 :request-count 20 :ghi 3}])
#'user/data
user=> (into {} (map (juxt :id :request-count) data))
{1 10, 2 15, 3 20}
Run Code Online (Sandbox Code Playgroud)
请注意,如果有多个映射data相同:id,则遇到的最后一个map映射将是在输出映射中存活的映射.
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |