2014-02-07 4 views
0

SortedDict является питон ДИКТ с дополнительным атрибутом, который использует в качестве сортировки,вещий способ сортировки SortedDict

sorted_dict = { 
       'personnel info': {'name': 'p_info', 'priority': 1}, 
       'educational info': {'name': 'edu_info', 'priority': 3} 
       'additional info': {'name': 'adi_info', 'priority': 2} 
} 
sorted_dict.keyOrder = ['personnel info', 'educational info', 'additional info'] 

теперь мы можем использовать этот отсортированный Dict в определенной упорядоченности, где мы используем.

теперь я должен разобраться в этом Dict по приоритетному т.е. порядку ключа должен быть на приоритетной основе

>>>print sorted_dict.keyOrder 
>>> ['personnel info', 'additional info', 'educational info'] 

любого вещий путь (например, отсортированные), чтобы избежать forloop/функции здесь.

примечание: у меня уже есть сортировка с начальным ключом.

+0

Вы говорите о [Джанго SortedDict] (https://code.djangoproject.com/wiki/SortedDict)? Синтаксис, который вы показали, не похож на действительный синтаксис, и я не вижу атрибута 'keyOrder' в документах. – user2357112

+0

Возможно, вы сможете использовать 'sorted_dict.keyOrder.sort (key = lambda k: sorted_dict [k] ['priority'])', в зависимости от того, что позволяет SortedDict API с атрибутом 'keyOrder'. – user2357112

+0

@ user2357112- да, я говорю о django SortedDict. конечно, мы не создаем отсортированный dict таким образом, но у него есть тот же keyOrder, чтобы поддерживать его порядок, и вы можете изменить этот атрибут. Я не знаю, о чем они говорят в доке или нет. – Roshan

ответ

1

Extract приоритет и ключи, а затем сортировать по приоритету т.е.

sorted_dict.keyOrder = [key[1] for key in sorted((v['priority'],k) for k,v in sorted_dict.items())] 
+0

спасибо @arocks, который кажется приятным. – Roshan

Смежные вопросы