It seems like you could get what you want with this sort of code: while (whatever): new_forward = whatever l = forward[domain] = forward.get (domain, []) l.append (new_forward) Alex.