我有这个:
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 %}
答案 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']