res = {} ret = [] for i in range(3): res['id']=i ret.append(res) print ret 结果是: [{'id': 0}] [{'id': 1}, {'id': 1}] [{'id': 2}, {'id': 2}, {'id': 2}] [{'id': 2}, {'id': 2}, {'id': 2}]
LEATH
浏览 352回答 2
2回答
慕婉清6462132
关键在这里ret.append(res)res是一个dict object,而不是一个dict拷贝。它的值是会变的。如果想要得到[{'id':0},{'id':1},{'id':2}],应该这样:ret = []for i in range(3):res = {}res['id']=iret.append(res)print ret或者(更简洁的):ret = []for i in range(3):ret.append({'id': i})print ret这样每次加入list的都是一个新的dict实例,值都是独立的。