1
我对Clojure很陌生,所以请耐心等待。我一直在为这个看似简单的任务而努力,这个任务是将地图贴图进行子集化几个小时,然后我被困住了。在clojure中设置地图的地图
我输入“类型”是一个字符串“在地图”的集合,并且具有类似的形式:
{2 {3.507276 [1 "Mp2H"], 14.4985235 [1 "MpHpNa"], 21.541099 [1 "MpHpNH4"], 22.4854915 [1 "MpHpK"], 24.020551 [1 "MpACNp2H"], 25.489771 [1 "Mp2Na"], 33.0231235 [1 "2Mp3H2Op2H"], 44.533826 [1 "Mp2ACNp2H"], 65.047101 [1 "Mp3ACNp2H"]}, 1 {6.007276 [1 "MpH"], 11.007276000000001 [1 "2MpH"], 23.033823 [1 "MpNH4"], 27.989771 [1 "MpNa"], 28.033823 [1 "2MpNH4"], 32.989771000000005 [1 "2MpNa"], 38.033489 [1 "MpCH3OHpH"], 43.963707 [1 "MpK"], 47.033826 [1 "MpACNpH"], 48.963707 [1 "2MpK"], 52.033826 [1 "2MpACNpH"], 69.016321 [1 "MpACNpNa"], 74.016321 [1 "2MpACNpNa"], 88.060376 [1 "Mp2ACNpH"]}, 3 {2.673942666666667 [1 "Mp3H"], 10.001440966666667 [1 "Mp2HpNa"], 17.328939336666668 [1 "Mp2NaH"], 17.328943366666667 [1 "MpHp2Na"], 24.65643766666667 [1 "Mp3Na"], 27.978229666666667 [1 "Mp2KpH"]}}
我想“在地图”子集,只有那些内部项目匹配“类型的“
这样的,如果我们的 '类型' 是["Mp2H" "MpH" "MpNH4" "Mp3H"]
则回复: {2 {3.507276 [1 "Mp2H"]}, 1{6.007276 [1 "MpH"], 23.033823 [1 "MpNH4"]}, 3{2.673942666666667 [1 "Mp3H"]}}
这是我目前的尝试:
(map (fn [[id multiple-items]]
[id (->> multiple-items
(filter (fn [[_ single-type]]
(in? types (get single-type 1)))
))]
in-map))
目前这是返回object[clojure.core$map$fn__4549 0x47257bf1 "[email protected]"]
。我有一个较早的尝试是致力于子集,但输出的格式并没有看起来的输入相匹配如下:
(map (fn [[id multiple-items]]
[id (filter (fn [[_ single-type]]
(in? types (get mol-adduct 1)))
multiple-items)])
in-map))
这将返回:
([2 ([3.507276 [1 "Mp2H"]])] [1 ([6.007276 [1 "MpH"]] [23.033823 [1 "MpNH4"]])] [3 ([2.673942666666667 [1 "Mp3H"]])])
这是不相同的格式输入。
谢谢你的帮助!