0
我有Django的字典和列表的
>>> post = Post.objects.all()
>>> post
[<Post: one>, <Post: two>, <Post: three>, <Post: four>]
列表,當我用for循環把對象字典和列表
>>> a = []
>>> b = {}
>>> for p in post:
... b[post.pub_date.year] = post.pub_date.month
... a.append(b)
和結果列表顯示的行爲:
>>> a
[{2016: 4, 2015: 8}, {2016: 4, 2015: 8}, {2016: 4, 2015: 8}, {2016: 4, 2015:
8}]
每個字典都在列表中相同
但是這個代碼會爲我想要的工作:
>>> for p in post:
... a.append({p.pub_date.year:p.pub_date.month})
和結果是:
>>> a
[{2016: 5}, {2016: 4}, {2015: 10}, {2015: 8}]
所以問題是正在發生的事情的字典嗎? 我不明白這個行爲...
所以如果詞典是外循環,B字典將取代原始字典,如果在循環中將創建新的B字典,所以列表將不會是相同的字典? –
@martinwang是的,如果你在循環之外定義它,你基本上一次又一次地修改相同的字典。謝謝。 – alecxe
謝謝,現在我明白了 –