亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django - For循環僅給出一項的結??果

Django - For循環僅給出一項的結??果

大話西游666 2023-04-25 16:57:51
我有以下內容ListView:class SongList(generic.ListView):    model = models.Song    template_name = 'videos/song_list.html'    context_object_name = 'song_list'我在哪里覆蓋get_context_data:    def get_context_data(self, **kwargs):        context = super(generic.ListView, self).get_context_data(**kwargs)現在我想對每首歌曲執行一些操作以便在我的模板上顯示它,所以我這樣做:        for song in context['song_list']:            song = models.Song.objects.get(title=song)            lyrics_list = models.Song.objects.get(title=song).lyrics_as_list()                        import pymorphy2            morph = pymorphy2.MorphAnalyzer()            lyrics_list_lemma = []            for word in set(lyrics_list):                parsed_word = morph.parse(word)[0]                result = {                    'word_original': word,                    'word_normalized': parsed_word.normal_form,                        }                lyrics_list_lemma.append(result)            context['lyrics_lemma'] = lyrics_list_lemma            context['count'] = len([k for d in lyrics_list_lemma for k in d.keys() if k == 'word_normalized'])        return contextlyrics_list_lemma我獲得了和的正確值count,但僅針對一首歌曲。我不應該為所有歌曲都得到它,因為它屬于循環嗎for?
查看完整描述

1 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

您正在覆蓋每個循環的值。在循環外聲明列表。


前任:


context['lyrics_lemma'] = []

context['count'] = []

for song in context['song_list']:

    song = models.Song.objects.get(title=song)

    lyrics_list = models.Song.objects.get(title=song).lyrics_as_list()

    

    import pymorphy2

    morph = pymorphy2.MorphAnalyzer()


    lyrics_list_lemma = []

    for word in set(lyrics_list):

        parsed_word = morph.parse(word)[0]

        result = {

            'word_original': word,

            'word_normalized': parsed_word.normal_form,

                }

        lyrics_list_lemma.append(result)

    context['lyrics_lemma'].append(lyrics_list_lemma)

    context['count'].append(len([k for d in lyrics_list_lemma for k in d.keys() if k == 'word_normalized']))

return context

你也可能需要一本字典或字典列表


context['data'] = []

for song in context['song_list']:

    .....

    context['data'].append({"lyrics_lemma": lyrics_list_lemma, 

                            "count": len([k for d in lyrics_list_lemma for k in d.keys() if k == 'word_normalized']))

或者


context['data'] = {}

for song in context['song_list']:

    .....

    context['data'].update({song: {"lyrics_lemma": lyrics_list_lemma, 

                                   "count": len([k for d in lyrics_list_lemma for k in d.keys() if k == 'word_normalized'])}})



查看完整回答
反對 回復 2023-04-25
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號