use*_*602 1 list clojure hashmap
我有一个如下所示的列表:
({:course 2, :mark 9} {:course 5, :mark 8} {:course 6, :mark 10})
Run Code Online (Sandbox Code Playgroud)
我想将其转换为hashmap:
{:2 9 :5 8 :6 10}
Run Code Online (Sandbox Code Playgroud)
列表是从mysql数据库创建的,我不知道我可以从其他格式的数据库中获取数据,这将更容易转换为一个hashmap,我使用java.jdbc查询函数.
有谁能够帮我?
(fn [data] (into {} (map (juxt :course :mark) data)))
Run Code Online (Sandbox Code Playgroud)
上
(list {:course 2, :mark 9} {:course 5, :mark 8} {:course 6, :mark 10})
Run Code Online (Sandbox Code Playgroud)
产生
{2 9, 5 8, 6 10}
Run Code Online (Sandbox Code Playgroud)
该keyword函数不接受数字作为参数,所以我认为你不能得到你想要的东西.但无论如何,数字和关键字一样好.
错误!正如其他人所证明的那样,Clojure接受数字字符串作为关键字.我们可以适应以上使用这样的:
(fn [data] (into {} (map (juxt (comp keyword str :course) :mark) data)))
Run Code Online (Sandbox Code Playgroud)
上
(list {:course 2, :mark 9} {:course 5, :mark 8} {:course 6, :mark 10})
Run Code Online (Sandbox Code Playgroud)
产生
{:2 9, :5 8, :6 10}
Run Code Online (Sandbox Code Playgroud)
但是,正如我所说,我认为这是不必要的风险.为什么不直接使用数字作为键?
进一步使用数字(字符串)作为关键字:
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |