按键列表排序

mor*_*h84 2 python django django-templates python-2.7

我有这个:

order = [
    'foo',
    'bar',
    'baz',
]
data = {
    'bar': 'barValue',
    'foo': 'fooValue',
    'baz': 'bazValue',
}
Run Code Online (Sandbox Code Playgroud)

我想最终得到这个:

sorted_data = [
    'fooValue',
    'barValue',
    'bazValue',
]
Run Code Online (Sandbox Code Playgroud)

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

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

{% for key in order %}
    <div>{{ data[key] }}</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

jua*_*ith 6

尝试列表理解:

sorted_data = [data[a_data] for a_data in order]
Run Code Online (Sandbox Code Playgroud)


the*_*eye 6

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

Python 2.7版本

>>> map(data.get, order)
['fooValue', 'barValue', 'bazValue']
Run Code Online (Sandbox Code Playgroud)

Python 3.x版本

>>> list(map(data.get, order))
['fooValue', 'barValue', 'bazValue']
Run Code Online (Sandbox Code Playgroud)