【问题标题】:How do I list all of the items in a dictionary by biggest value to lowest value using Python and Django?如何使用 Python 和 Django 按最大值到最小值列出字典中的所有项目?
【发布时间】:2017-11-05 04:39:07
【问题描述】:

所以我把它作为我的 html 文件。

<form method="post">
    {% csrf_token %}
    Problem: <input type="text" name="poi" autofocus>
    <input type="submit" value="Submit">
    <hr>
</form>
<br>
<ul>
    {% for u in sort %}
        <li>{{ u|safe }}</li>
    {% endfor %}
<ul>

我有一个名为 sort 的变量,它获取字典 dictionary = {'hi': 5, 'hey': 3, 'hiya': 1} 中的所有项目,并使用以下方法按从最高到最低的值对它们进行排序。

for w in sorted(dictionary, key=dictionary.get, reverse=True):
    sort.append(w)

现在列表按从最高到最低的顺序排列。正如您在 html 文件中看到的那样,我正在尝试按顺序打印它们。出了问题的是它没有打印任何东西。我做错了什么?

编辑:render 参见以下内容。

try:
    return HttpResponse(request, 'patrec.html', {'sort':sort})
except:
    return render(request, 'patrec.html')

【问题讨论】:

  • 确定 sort 包含您期望的内容吗? (您是否在视图代码的日志消息中打印了它的内容?)您是否将sort 传递给模板render 调用?
  • 我进行了编辑。有机会就去看看
  • 是否从数据库中获取数据?如果是,那么您可以使用 django ORM。看看这个docs.djangoproject.com/en/1.11/ref/models/querysets/…

标签: python html django dictionary


【解决方案1】:

您以错误的方式使用HttpResponse。它注定会抛出异常,因为它不是这样工作的。因此,它一直引发异常,并且在except 块内它将返回render 的结果,您没有将{'sort': sort} 作为上下文传递。所以只需删除tryexcept 块以及HttpResponse。你应该只有这个:

return render(request, 'patrec.html', {'sort': sort})

【讨论】:

  • 我保留了try...except,它工作正常。谢谢你的回答!
【解决方案2】:

你可以这样做

import heapq
list1=heapq.nlargest(len(dict1), dict1, key=dict1.get)
print(list1)

其中,dict1 是字典名称。

由于 heapq 是 Python 3 内置的,因此您无需 pip 安装任何东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2023-03-29
    • 2017-10-11
    • 1970-01-01
    • 2021-07-30
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多