0

我有 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'}]

不要只添加最后一个对象,而是将其添加到每个元素中。

4

1 回答 1

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]} )
于 2012-11-28T21:36:01.687 回答