如何通过字典中的键值对字典进行排序?

时间:2019-12-10 22:12:24

标签: python-3.x apache dictionary jinja2 mod-wsgi

我在python3烧瓶中写了自己的愿望清单(使用apache mod_wsgi)

这是我的愿望清单项目的数据结构:

{
  },
  "": {
    "images": {
      "pic": ""
    },
    "buylinks": {
      "": {
        "link": "",
        "price": ""
      }
    },
    "want": "",
    "comments": ""
  }
}

例如:

"Nintendo Joy-Con (L/R) - Gray": {
    "images": {
      "pic": "wishlist/joycons-grey.jpg"
    },
    "buylinks": {
      "Amazon": {
        "link": "https://www.amazon.com/dp/B01N6QKT7H",
        "price": "66.99"
      }
    },
    "want": "7/10",
    "comments": "extra joycons for playing with friends on my switch"
  },

现在,每次我更新包含心愿单数据的json文件时,apache服务器jinja模板都会以不同的顺序吐出iut

我的jinja模板看起来像

<table>
        <tr>
            <th>Name</th>
            <th>Image(s)</th>
            <th>Links To Buy</th>
            <th>Want/10</th>
            <th>Comments</th>
        </tr>
        {% for key in wishlist.keys() %}
        <tr>
            <td><b>{{ key }}</b></td>
            <td>{% for image in wishlist[key]["images"].keys() %}
            <img src="{{ url_for('static', filename=wishlist[key]["images"][image]) }}" width="250px">
            {% endfor %}</td>
            <td>{% for merchant in wishlist[key]["buylinks"].keys() %}
            <a href="/redirect/?URL={{ wishlist[key]["buylinks"][merchant]["link"] }}&linkedfrom=wishlist" target="_blank">{{ merchant}} </a>(~${{ wishlist[key]["buylinks"][merchant]["price"] }})
            <br>{% endfor %}</td>
            <td><a> {{ wishlist[key]["want"] }} </a></td>
            <td> {{ wishlist[key]["comments"] }}</td>
        </tr>
        {% endfor %}
    </table>

如何修改{% for key in wishlist.keys() %}行以按需求键的值对心愿单排序,以10/10开头,0/10结尾? (用于对示例项进行排序的值为“ 7/10”)

我认为我需要使用“排序”功能,但不确定如何使用

1 个答案:

答案 0 :(得分:0)

因此要使其正常工作,我必须添加

wishlist_keys = sorted(wishlist.keys(), reverse=True, key=lambda x: wishlist[x]["want"] )

到我的烧瓶python代码,并将wishlist_keys传递到render_template()

并将模板更改为

{% for key in wishlist_keys %}
相关问题