将字典对象插入到数组的特定元素中(Python / Django)

时间:2012-11-28 21:28:39

标签: python django arrays dictionary

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

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

1 个答案:

答案 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]} )