Question: I'm asking to put a list of strings into a dictionary, such that the indices of the characters are the keys and the values are the combined characters.  

I'm trying to get this as terse as I can. 

My code:

```
a = ['apple','pear']
b = map(lambda x:dict(enumerate(x)),a)
print b

```

Output:

```
[{0: 'a', 1: 'p', 2: 'p', 3: 'l', 4: 'e'}, {0: 'p', 1: 'e', 2: 'a', 3: 'r'}]

```

Desired output:

```
{0:'ap',1:'pe',2:'pa',3:'lr',4:'e'}

```

Answer: 
*Do you know if I can do this without the itertools import*, yes `map` will work to catch the shorter string as you are using python2:

```
a = ['apple','pear']
b = {i: a + b if b else a  for i, (a, b) in enumerate(map(None,*a))}

print(b)
{0: 'ap', 1: 'pe', 2: 'pa', 3: 'lr', 4: 'e'}

```

To work for either a or b being different lengths we need a little more logic:

```
b = {i: a if not b else b if not a else a + b for i,(a, b) in enumerate(map(None, *a))}

```

`map(None,*a)` will behave somewhat like `zip_longest`, None will be used as a fillvalue for the shorter string. We just check if a or b is None and do the appropriate thing based on the result.
similar solution

```
{i: x+y for i, (x,y) in enumerate(zip_longest(*a,fillvalue=''))}

{0: 'ap', 1: 'pe', 2: 'pa', 3: 'lr', 4: 'e'}

```