Python - 如何在 django 模板中为所有值并排显示两个键的字典值
Posted
技术标签:
【中文标题】Python - 如何在 django 模板中为所有值并排显示两个键的字典值【英文标题】:Python - How to show dictionary values from two keys side by side in django template for all values 【发布时间】:2020-10-19 11:52:40 【问题描述】:假设我的 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
提前感谢您的任何建议/帮助。
【问题讨论】:
【参考方案1】:据我了解您的问题以及 dict_lyrics 的进展情况,如果您想以这种形式显示问题 0 的答案 0 和问题 1 的答案 1:
word1 - word3
word2 - 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_lyrics dict_lyrics = 'question': ['word1', 'word2', 'wordX'], 'answer': ['word3', 'word4', 'wordY']
并假设len(dict_lyrics["question"]) == len(dict_lyrics["answer"])
for i in range(len(li["question"])):
print(f"li['question'][i] li['answer'][i]")
应该做的伎俩:
word1 word3
word2 word4
wordX wordY
编辑:评论后,我猜你正在寻找某种 html 输出。我会像这样更改您在问题中显示的循环:
% for i in range(len(li["question"])): %
<tr>
<td> Key: li['question'][i] </td>
<td> Value: li['answer'][i] </td>
</tr>
% endfor %
【讨论】:
谢谢!但是我将如何在我的模板中呈现它(而不是打印)? 我编辑了我的评论以显示某种 HTML 输出。这是你需要的吗?【参考方案2】:将此添加到我的视图中:
context['combined'] = list(zip(dict_lyrics['question'], dict_lyrics['answer']))
然后在模板中使用这个:
% for i, j in combined %
i -- j
% endfor %
解决了我的问题。
【讨论】:
以上是关于Python - 如何在 django 模板中为所有值并排显示两个键的字典值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 模板中为循环创建唯一的 javascript 变量名?
如何在 Django settings.py 中为 CDN 设置 STATIC_URL
如何在(Django GeoIP)中为每个国家/地区显示广告