Das Literal {} bezeichnet ein neues, leeres Dictionary. Demnach wird im zweiten Quelltext vier Mal ein neues, leeres Dictionary an l drangehängt.

Im ersten Beispiel hingegen wird zunächst eine Liste, die ein leeres Dictionary enthält, erzeugt und dann vervierfacht. Dies bedeutet, dass genau dieses Dictionary noch drei Mal an l angehängt wird.

Im Allgemeinen sind Konstruktionen, in wie hier denen vorfabrizierte Datenstrukturen stehen, von denen niemand weiß, ob sie jemals gebraucht werden, unpythonesk – von daher ist dieses zunächst vielleicht etwas seltsam anmutende Verhalten verschmerzbar. Wenn ihr wirklich mal einen ganzen Haufen veränderbarer Datenstrukturen (mit Listen wäre natürlich das Gleiche passiert) in einer Sequenz braucht, verwendet list comprehensions.