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])]))

'data'を次のように表示します。

[{'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 に答える