Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在clojure中将hashmaps列表转换为一个hasmap?_List_Clojure_Hashmap - Fatal编程技术网

List 如何在clojure中将hashmaps列表转换为一个hasmap?

List 如何在clojure中将hashmaps列表转换为一个hasmap?,list,clojure,hashmap,List,Clojure,Hashmap,我有一个列表,如下所示: ({:course 2, :mark 9} {:course 5, :mark 8} {:course 6, :mark 10}) 我想将其转换为hashmap: {:2 9 :5 8 :6 10} 列表是从mysql数据库创建的,我不知道我可以从数据库中以其他格式获取数据,这将更容易转换为一个hashmap,我使用了java.jdbc查询函数 有人能帮我吗 (fn [data] (into {} (map (juxt :course :mark) data)))

我有一个列表,如下所示:

({:course 2, :mark 9} {:course 5, :mark 8} {:course 6, :mark 10})
我想将其转换为hashmap:

{:2 9 :5 8 :6 10}
列表是从mysql数据库创建的,我不知道我可以从数据库中以其他格式获取数据,这将更容易转换为一个hashmap,我使用了java.jdbc查询函数

有人能帮我吗

(fn [data] (into {} (map (juxt :course :mark) data)))

产生

{2 9, 5 8, 6 10}
{:2 9, :5 8, :6 10}
关键字函数不接受数字作为参数,因此我认为您无法获得所需的内容。但无论如何,数字和关键字一样好

错了!正如其他人所演示的,Clojure接受数字字符串作为关键字。我们可以对上述内容进行调整,以使用以下内容:

(fn [data] (into {} (map (juxt (comp keyword str :course) :mark) data)))

产生

{2 9, 5 8, 6 10}
{:2 9, :5 8, :6 10}
但是,正如我所说,我认为这是不必要的风险。为什么不把数字当作钥匙呢

进一步使用数字字符串作为关键字:

警察说

符号以非数字字符开头。。。 关键字类似于符号,除了:。。。进一步限制 在

产生

{2 9, 5 8, 6 10}
{:2 9, :5 8, :6 10}
关键字函数不接受数字作为参数,因此我认为您无法获得所需的内容。但无论如何,数字和关键字一样好

错了!正如其他人所演示的,Clojure接受数字字符串作为关键字。我们可以对上述内容进行调整,以使用以下内容:

(fn [data] (into {} (map (juxt (comp keyword str :course) :mark) data)))

产生

{2 9, 5 8, 6 10}
{:2 9, :5 8, :6 10}
但是,正如我所说,我认为这是不必要的风险。为什么不把数字当作钥匙呢

进一步使用数字字符串作为关键字:

警察说

符号以非数字字符开头。。。 关键字类似于符号,除了:。。。进一步限制
另一种变体。如果你有很多数据,可能会比缩略图的效率低

(zipmap (map (comp keyword str :course)  data)
        (map :mark data))

其中数据采用问题中指定的格式。

另一种变体。如果你有很多数据,可能会比缩略图的效率低

(zipmap (map (comp keyword str :course)  data)
        (map :mark data))

其中数据采用问题中指定的格式。

juxt在这里是个好主意!为了练习,这里有一个解决方案,可以将精确的请求输出:fn[data]转换为{}map juxt关键字str:course%:markdata@leontalbot我做的有点不同,里昂。我仍然对数字字符串关键字被接受感到惊讶。不管怎样,以关键字为函数的juxt非常有表现力。表达内部函数的另一个方法是->%:course str关键字,如果你正在玩代码高尔夫:仍然比我的长一个字符,呵呵.juxt在这里是个好主意!为了练习,这里有一个解决方案,可以将精确的请求输出:fn[data]转换为{}map juxt关键字str:course%:markdata@leontalbot我做的有点不同,里昂。我仍然对数字字符串关键字被接受感到惊讶。不管怎样,以关键字为函数的juxt非常有表现力。表达内部函数的另一个方法是->%:course str关键字,如果你正在玩代码高尔夫:仍然比我的长一个字符,呵呵。。。。或应用zipmap地图%数据[comp关键字str:course:mark]。。。或应用zipmap地图%数据[comp关键字str:course:mark]