我在Python中有代码从数据库获取数据并且看起来像这样:
for result in request.user.results.all():
data.append(dict([(str(word.type.type), str(word.word)) for word in result.word.all()
data.append(dict([(season, ResultForm.CHOICES[r.season][1])]))
将“数据”显示为:
[{'color': 'blue', 'kind': 'pencil', 'rating': 'high'}, {'color': 'red', 'kind': 'truck', 'rating': 'low'}, {'season': 'winter'}, {'season': 'spring'}]
如何调整代码以使数据输出如下:
[{'color': 'blue', 'kind': 'pencil', 'rating': 'high', 'season': 'winter'}, {'color': 'red', 'kind': 'truck', 'rating': 'low', 'season': 'spring'}]
不是仅添加最后一个对象,而是将其添加到每个元素。
答案 0 :(得分:0)
我想你想要dict.update
。但是,我有点不确定在哪里插入dict.update
,因为我无法弄清楚你的代码是如何工作的 - 在我看来你的输出应该是这样的:
[{'color': 'blue', 'kind': 'pencil', 'rating': 'high'}, {'season': 'winter'}, {'color': 'red', 'kind': 'truck', 'rating': 'low'}, {'season': 'spring'}]
由于“季节”字典紧接着另一个(“颜色”等)字典......
作为旁注:
dict([(score, ResultForm.CHOICES[r.season][1])])
必须更易于理解(并且有效地):
{score: ResultForm.CHOICES[r.season][1]}
如你的评论所示,我相信你想要这样的东西:
for result in request.user.results.all():
data.append(dict((str(word.type.type), str(word.word)) for word in result.word.all()))
data[-1].update( {score: ResultForm.CHOICES[r.season][1]} )