Hi Jim,

I don't think that would give the result I need.  Let me give a more
realistic example:

(defn every-day [[start :start end: end]] ...) ; returns [date1 date2 date3]
(def m [{:id 1 :start 1/1/2010 :end 3/1/2010} {:id 2 :start 3/1/2010 :end
3/1/2010}]

(group-by every-day m) would give something like:
{[1/1/2010 2/1/2010 3/1/2010] [{:id1 ...}]
 [3/1/2010] [{:id 2...}]}

I now want to transform that result to the following:

{1/1/2010 [{:id 1...}]
 3/1/2010 [{:id 1 ...} {:id 3}]}

I am thinking I probably need to process each key/value in the original map
(m) and then use assoc-in to build up the map but that feels pretty
imperative and given Clojure's magic and transforming shapes I figure there
must be a better way...




On 8 July 2013 20:35, Jim - FooBar(); <[email protected]> wrote:

> you can use group-by as you showed and then reduce-kv over them map
> replacing each key with '(count key)'...I don't see a way of doing this in
> one-pass using group-by alone...
>
> Jim
>
>
>
> On 08/07/13 20:25, Colin Yates wrote:
>
>> Hi,
>>
>> I have a sequence of items and want to group them into categories, the
>> value of which is a function of the item.  This sounds exactly what
>> group-by is after.
>>
>> The kicker is that the function could return multiple values.  Imagine
>> each item was a date range and I wanted to group them by the number of days
>> in that date range.
>>
>> For example, (group-by #(range 1 (inc %)) [1 2 3] => {(1) [1] (1 2) [2]
>> (1 2 3) [3]}.  I want {1 [1] 2 [1 2] 3 [1 2 3]}.
>>
>> Any ideas?
>>
>> Thanks!
>>
>> Col
>> --
>> --
>> 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
>> clojure+unsubscribe@**googlegroups.com<clojure%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to 
>> clojure+unsubscribe@**googlegroups.com<clojure%[email protected]>
>> .
>>
>> For more options, visit 
>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>> .
>>
>>
>>
> --
> --
> 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
> clojure+unsubscribe@**googlegroups.com<clojure%[email protected]>
> For more options, visit this group at
> http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en>
> --- You received this message because you are subscribed to a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/**
> topic/clojure/AkKuHVNPIq4/**unsubscribe<https://groups.google.com/d/topic/clojure/AkKuHVNPIq4/unsubscribe>
> .
> To unsubscribe from this group and all its topics, send an email to
> clojure+unsubscribe@**googlegroups.com<clojure%[email protected]>
> .
> For more options, visit 
> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
> .
>
>
>

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to