2017-07-12 17 views
1

私は非常に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"]])]) 

を入力。

ありがとうございました!

答えて

1

私はいくつかの余分なGoogle Fuでそれを把握して遊んだことができました!解決策:

(into {} 
    (map (fn [[id multiple-items]] 
    [id (into {} 
      (filter (fn [[_ single-type]] 
        (in? types (get mol-adduct 1))) 
      multiple-items))]) 
    in-map))