1 | initial version |

Here is a possible way:

Landscape (a concrete example to fix ideas):

```
sage: R.<x,y> = QQ[]
sage: P = x^2+x*y+x+2
```

Instead of a list (with possibly lot of zeroes), let me use a `defaultdict`

to collect the polynomials:

```
sage: from collections import defaultdict
sage: d = defaultdict(P.parent())
```

Then we can feed it by iterating over the polynomial:

```
sage: for coeff,monom in P:
....: d[monom.degree()] += coeff * monom
```

So we have:

```
sage: d
defaultdict(Multivariate Polynomial Ring in x, y over Rational Field, {0: 2, 1: x, 2: x^2 + x*y})
sage: d[0]
2
sage: d[1]
x
sage: d[2]
x^2 + x*y
sage: d[3]
0
sage: d[123]
0
sage: d[123].parent()
Multivariate Polynomial Ring in x, y over Rational Field
sage: sum(d[i] for i in d)
x^2 + x*y + x + 2
sage: sum(d[i] for i in d) == P
True
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.