2013-11-21 91 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'保持' - 好主意。我做了改變。謝謝! – overthink

+0

正是我需要的。 – Shile