2013-11-21 3 views
2

중첩 된지도가 있는데, 어떻게 모든 값을 얻을 수 있습니까? kvota 키워드? 결과는 5.8,3.2,2.25가되어야합니다. 선택 키를 사용했지만 행운도없이 시도했습니다 ...중첩 된지도에서 값 가져 오기

{:b4f0d011-31a2-4be3-bb8d-037725310207 {:tiket {:3 {:id 13, :par Porto - Zenit, :igra 2, :kvota 5.8}, :2 {:id 12, :par Celtic - Ajax, :igra x, :kvota 3.2}, :1 {:id 11, :par Arsenal - Dortmund, :igra 1, :kvota 2.25}}}} 

답변

3

데이터 구조에있는 각 :kvota에 해당하는 값을 가져옵니다.

;; Data in quesiton doesn't read as-is, so this is altered slightly. 
(def data 
    {:b4f0d011-31a2-4be3-bb8d-037725310207 
    {:tiket 
    {:1 {:kvota 2.25, :par "Arsenal - Dortmund", :igra 1, :id 11} 
    :3 {:kvota 5.8, :par "Porto - Zenit", :igra 2, :id 13} 
    :2 {:kvota 3.2, :par "Celtic - Ajax", :igra "x", :id 12}}}}) 

(keep :kvota (tree-seq map? vals data)) ; (2.25 5.8 3.2) 
+0

우수 답변! 나는'tree-seq'를 그런 식으로 사용하지 않을 것입니다. 그런데,'(nil? (map f ...))'는'(keep f ...) '와 같습니다. –

+0

@OmriBernstein'keep' - 좋은 생각. 나는 변화를 만들었다. 감사! – overthink

+0

정확하게 필요한 것. – Shile