I Liste von djangoDas Verhalten von Wörterbuch und Liste
>>> post = Post.objects.all()
>>> post
[<Post: one>, <Post: two>, <Post: three>, <Post: four>]
und wenn ich für Schleife verwenden Objekte zu setzen Show Wörterbuch und Liste
>>> a = []
>>> b = {}
>>> for p in post:
... b[post.pub_date.year] = post.pub_date.month
... a.append(b)
und Ergebnisliste:
>>> a
[{2016: 4, 2015: 8}, {2016: 4, 2015: 8}, {2016: 4, 2015: 8}, {2016: 4, 2015:
8}]
jedes Wörterbuch alle gleich in der Liste
aber dieser Code funktioniert für das, was ich will:
>>> for p in post:
... a.append({p.pub_date.year:p.pub_date.month})
und Ergebnis ist:
>>> a
[{2016: 5}, {2016: 4}, {2015: 10}, {2015: 8}]
so die Frage ist, was im Wörterbuch passiert? Ich verstehe dieses Verhalten nicht ...
also, wenn Wörterbuch außerhalb der Schleife ist, b Wörterbuch ersetzen Originalwörterbuch, und wenn in der Schleife wird neue b-Wörterbuch erstellen, so dass die Liste nicht das gleiche Wörterbuch sein wird? –
@martinwang yeah, Sie modifizieren das gleiche Wörterbuch immer und immer wieder, wenn Sie es außerhalb der Schleife definieren. Vielen Dank. – alecxe
Danke, jetzt verstehe ich es –