Question: I want to convert a string such as 'a=b,a=c,a=d,b=e' into a dict of lists {'a': ['b', 'c', 'd'], 'b': ['e']} in Python 2.6.

My current solution is this:

```
def merge(d1, d2):
    for k, v in d2.items():
        if k in d1:
            if type(d1[k]) != type(list()):
                d1[k] = list(d1[k])
            d1[k].append(v)
        else:
            d1[k] = list(v)
    return d1

record = 'a=b,a=c,a=d,b=e'

print reduce(merge, map(dict,[[x.split('=')] for x in record.split(',')]))

```

which I'm sure is unnecessarily complicated.

Any better solutions?

Answer: 
```
d = {}
for i in 'a=b,a=c,a=d,b=e'.split(","):
    k,v = i.split("=")
    d.setdefault(k,[]).append(v)
print d

```

or, if you're using python > 2.4, you can use [defaultdict](http://docs.python.org/library/collections.html#defaultdict-examples)

```
from collections import defaultdict

d = defaultdict(list)
for i in 'a=b,a=c,a=d,b=e'.split(","):
    k,v = i.split("=")
    d[k].append(v)
print d

```
Using a regex allow to do the work of two splits in only one:

```
import re

ch ='a=b,a=c ,a=d,   b=e'

dic = {}
for k,v in re.findall('(\w+)=(\w+)\s*(?:,|\Z)',ch):
    dic.setdefault(k,[]).append(v)

print dic

```