Python - 如何在 django 模板中并排显示来自两个键的所有值的字典值

假设我的 Django 视图中有以下字典:


dict_lyrics = {'question': ['word1', 'word2'], 'answer': ['word3', 'word4']}

现在在我的模板中,我想将其显示为:


word1 - word3

word2 - word4


(它已经按正确的顺序排列。)


但我做不对。如何从一个键中获取第一个值,从第二个键中获取第一个值,依此类推?我无休止地用谷歌搜索,并且在兜圈子。


如果我这样迭代:


{% for key, value in dict_lyrics.items %}

    <tr>

        <td> Key: {{ key }} </td>

        <td> Value: {{ value }} </td>

    </tr>

{% endfor %}

...我从一个键中获取所有值,然后从另一个键中获取所有值。我怎样才能并排显示它们,还是更改我的字典更好?


我的看法:


z = []

dict_lyrics = {'question': [], 'answer': []}

for word in user_word:

    x = lyrics_list_clean.index(word)

    y = user_word.index(word)

    flash = Flashcard.objects.get(owner=self.request.user, question=word)

    z.append(flash.answer)

    dict_lyrics['question'].append(lyrics_list_clean[x])

    dict_lyrics['answer'].append(z[y])

    context['question'] = dict_lyrics['question']

    context['answer'] = dict_lyrics['answer']

    context['dict_lyrics'] = dict_lyrics

预先感谢您的任何建议/帮助。


湖上湖
浏览 79回答 2
2回答

天涯尽头无女友

将此添加到我的观点中:context['combined'] = list(zip(dict_lyrics['question'], dict_lyrics['answer']))然后在模板中使用它:{% for i, j in combined %}&nbsp; &nbsp; {{ i }} -- {{ j }}{% endfor %}解决了我的问题。

慕婉清6462132

据我了解您的问题以及 dict_lyrics 的进展情况,如果您想以这种形式显示问题 0 的答案 0 和问题 1 的答案 1:word1 - word3word2 - word4你可以这样做:answers = [v for subl in li.values() for v in subl]frist_qa = answers[0::2]second_qa = answers[1::2]print(f"{' '.join(first_qa)}")print(f"{' '.join(second_qa)}")在哪里first_qa举行['word1', 'word3']和second_qa举行['word2', 'word4']以更一般的方式,例如,这个 dict_lyricsdict_lyrics = {'question': ['word1', 'word2', 'wordX'], 'answer': ['word3', 'word4', 'wordY']}并假设len(dict_lyrics["question"]) == len(dict_lyrics["answer"])for i in range(len(li["question"])):&nbsp; &nbsp; print(f"{li['question'][i]} {li['answer'][i]}")应该做的伎俩:word1 word3word2 word4wordX wordY编辑:发表评论后,我猜您正在寻找某种 HTML 输出。我会像这样更改您在问题中显示的循环:{% for i in range(len(li["question"])): %}&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; &nbsp; <td> Key: {{ li['question'][i] }} </td>&nbsp; &nbsp; &nbsp; &nbsp; <td> Value: {{ li['answer'][i] }} </td>&nbsp; &nbsp; </tr>{% endfor %}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python