On Fri, 5 Mar 2010 16:07:55 -0800 (PST)
Base <[email protected]> wrote:
>
> Hi all -
>
> I am trying to transofrm a data structure and am kind of stuck.
>
> I currently have a list of maps
>
> ( {:animal "dog cat bird" :sound "woof meow chirp" :number-of-feet "4
> 4 2"}
> {:animal "horse" :sound "neeeee" :number-of-feet "4"}
> {:animal "wolf pig" :sound "howl oink":number-of-feet "4 4"} )
>
> and want to trasform it to:
>
> (
> ({:animal "dog" :sound "woof" :number-of-feet "4" }
> {:animal "cat" :sound "meow" :number-of-feet "4"}
> {:animal "bird" :sound "chirp" :number-of-feet "2"})
>
> ({:animal "horse":sound "neeee" :number-of-feet "4"})
>
> ({:animal "wolf" :sound "howl" :number-of-feet "4"}
> {:animal "pig" :sound "oink" :number-of-feet "4"})
> )
How about this?
(use '[clojure.contrib.str-utils2 :only [split]])
(defn cook [animals]
(map (fn [{:keys [animal sound number-of-feet]}]
(map #(hash-map :animal %1 :sound %2 :number-of-feet %3)
(split animal #"\s")
(split sound #"\s")
(split number-of-feet #"\s")))
animals))
which gives:
(({:number-of-feet "4", :sound "woof", :animal "dog"}
{:number-of-feet "4", :sound "meow", :animal "cat"}
{:number-of-feet "2", :sound "chirp", :animal "bird"})
({:number-of-feet "4", :sound "neeeee", :animal "horse"})
({:number-of-feet "4", :sound "howl", :animal "wolf"}
{:number-of-feet "4", :sound "oink", :animal "pig"}))
--
Mike Meyer <[email protected]> http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en