2014-01-21 4 views
2

У меня есть это:сортировать ДИКТ по ​​ключевому списку

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

Я хочу, чтобы в конце концов, чтобы это:

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

Итак, у меня есть Dict с парами ключ-значение и у меня есть список, который содержит ключи от этого dict в некотором порядке. Я хочу получить список значений dict, отсортированных по ключам в том порядке, в котором они указаны в списке.

мне это нужно, потому что, к сожалению, Django не поддерживает что-то же просто, как это в шаблонах:

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

Это не называется 'sorting' – thefourtheye

ответ

6

Здесь очень простой однострочный вкладыш, и он выглядит следующим образом:

Python 2.7 версии

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

Python 3.x версия

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

Попробовать список понимания:

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

Использование списка понимание:

>>> order = [ 
    'foo', 
    'bar', 
    'baz', 
] 
data = { 
    'bar': 'barValue', 
    'foo': 'fooValue', 
    'baz': 'bazValue', 
} 
>>>       
>>> [data[o] for o in order] 
['fooValue', 'barValue', 'bazValue'] 
Смежные вопросы