按键列表排序

时间:2014-01-21 14:06:38

标签: python django python-2.7 django-templates

我有这个:

order = [
    'foo',
    'bar',
    'baz',
]
data = {
    'bar': 'barValue',
    'foo': 'fooValue',
    'baz': 'bazValue',
}

我想最终得到这个:

sorted_data = [
    'fooValue',
    'barValue',
    'bazValue',
]

所以,我有一个带键值对的字典,我有一个列表,其中包含来自该字典的键。我想获得一个按键排序的dict值列表,按列表中指定的顺序排序。

我需要这个,因为不幸的是Django不支持模板中这么简单的东西:

{% for key in order %}
    <div>{{ data[key] }}</div>
{% endfor %}

3 个答案:

答案 0 :(得分:6)

尝试列表理解:

sorted_data = [data[a_data] for a_data in order]

答案 1 :(得分:6)

这里有一个非常简单的单行,它就像这样

Python 2.7版

>>> map(data.get, order)
['fooValue', 'barValue', 'bazValue']

Python 3.x版

>>> list(map(data.get, order))
['fooValue', 'barValue', 'bazValue']

答案 2 :(得分:2)

使用列表理解:

>>> order = [
    'foo',
    'bar',
    'baz',
]
data = {
    'bar': 'barValue',
    'foo': 'fooValue',
    'baz': 'bazValue',
}
>>>                         
>>> [data[o] for o in order]
['fooValue', 'barValue', 'bazValue']