[Haskell-beginners] Python's collections.defaultdict(list) in Haskell?

Dan Stromberg strombrg at gmail.com
Tue Nov 10 05:23:27 UTC 2015


These are some good leads.

I'll be adding values one at a time, and yes, my keys aren't necessarily
unique.

Is there a way of cons'ing on the single values one at a time, that will
avoid the slowness of ++ ?

Thanks.

On Mon, Nov 9, 2015 at 7:45 PM, Sylvain Henry <hsyl20 at gmail.com> wrote:

> import qualified Data.Map as Map
>
> -- if your keys are unique
> let xs = [("Item0", ["a","b","c"]), ("Item1", ["x","y"]), ("Item2",
> ["abc","def"])]
> Map.fromList xs
>
> -- if you want to combine values for keys that are equal
> let xs = [("Item0", ["a","b","c"]), ("Item1", ["x","y"]), ("Item0",
> ["abc","def"])]
> Map.fromListWith (++) xs
>
> --
> Sylvain
>
>
> 2015-11-10 3:07 GMT+01:00 Dan Stromberg <strombrg at gmail.com>:
>
>>
>> I'm spending a little time here and there to learn some Haskell.  I'm
>> coming from a chiefly Python/C/bash background.
>>
>> I want to build a Data.Map where the keys are strings, and the values are
>> lists of strings.
>>
>> In Python, collections.defaultdict(list) makes this pretty
>> straightforward. It gives a hash table ("dict") that has values that
>> default to an empty list, since list() produces an empty list. More info
>> here:
>> https://docs.python.org/3/library/collections.html#collections.defaultdict
>>
>> Is there an equivalent in Haskell?
>>
>> Thanks!
>>
>> --
>> Dan Stromberg
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
>


-- 
Dan Stromberg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151109/8a39d11f/attachment.html>


More information about the Beginners mailing list