我有一个收件人查询包含两个收件人ID 1 和 2:
我循环遍历每一个来构建 json 输出:
data = []
this_tem = {}
for item in recipients:
this_tem['recipient_id'] = item.pk
data.append(this_tem)
return HttpResponse(json.dumps(data), mimetype='application/json')
这给了我:
[
{
"recipient_id": 2,
},
{
"recipient_id": 2,
}
]
正如你所看到的,它应该是recipient_id 1
and recipient_id 2
但是,我的循环覆盖了该值,为什么?
this_tem
是对单个对象(字典)的引用,您可以在循环中重复修改和附加该对象。您在循环中覆盖该键的值。
您需要每次迭代创建一个新的字典:
data = []
for item in recipients:
this_tem = {}
this_tem['recipient_id'] = item.pk
data.append(this_tem)
Edit
正如 Grijesh Chauhan 慷慨指出的那样,表达式和循环可以通过列表理解来简化:
data = [{'recipient_id': item.pk} for item in recipients]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)