鉴于钥匙
:id
:tag
:name
Run Code Online (Sandbox Code Playgroud)
和三个懒惰的序列产生形式的输出
(id1 id2 id3 ...)
(name1 name2 name3 ...)
(type1 type2 type3 ...)
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能在表格中获得一系列地图
({id: id1 :name name1 :type type1}
{id: id2 :name name2 :type type2}
{id: id3 :name name3 :type type3}
...)
Run Code Online (Sandbox Code Playgroud)
我尝试了apply,map,assoc等的各种组合,但没有得到它.
mty*_*aka 11
你只需要map:
(map (fn [id name type] {:id id :name name :type type})
(id1 id2 id3 ...)
(name1 name2 name3 ...)
(type1 type2 type3 ...))
Run Code Online (Sandbox Code Playgroud)
我的回答与mtyaka的答案非常相似,但在我看来,它的篇幅更短,更模块化.
(map (fn [& vs] (zipmap [:id :name :type] vs))
(id1 id2 id3 ...)
(name1 name2 name3 ...)
(type1 type2 type3 ...))
Run Code Online (Sandbox Code Playgroud)
在这里,zipmap正在创建使用固定密钥序列和可变值序列,其中映射在"第一步"将是(id1 name1 type1),在"第二步骤"将是(id2 name2 type2)等
这仅在您的三个惰性序列彼此隔离时才有效.如果你有一系列延迟序列,((id1 id2 ...) (name1 name2 ...) (type1 type2 ...))那么你将不得不对apply上面这个seq,如下所示:
(apply map (fn [& vs] (zipmap [:id :name :type] vs))
((id1 id2 id3 ...)
(name1 name2 name3 ...)
(type1 type2 type3 ..)))
Run Code Online (Sandbox Code Playgroud)
这里,apply只是将代码map (fn [& vs] (zipmap [:id :name :type] vs))放在延迟序列序列的前面,这就成了要评估的表达式.换句话说,它产生与第一个代码块完全相同的表达式.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |