this creates an extra temporary list (of Nones)
explicit for loop would be more readible
with defaultdict the initialization wouldn't be necessary, but not important.

(I haven't tried to figure out the storage structure yet.)