2015-06-25 4 views
-2

Итак, я думаю, что название объясняет проблему довольно хорошо. Мне нужна помощь с функцией, которая сортирует словарь по списку упорядоченных ключей. Я бы хотел получить оптимальное решение.Сортировка словаря в Python с использованием списка упорядоченных ключей

Пример:

>>> keyorder = ['a', 'c', 'b'] 
>>> mydict = {'c': 2, 'a': 1, 'b': 3} 
>>> sorted_list = sortdictbykeys(mydict, keyorder) 
>>> sorted_list 
[1, 2, 3] 
+2

Да, это то, что вы хотите делать. Итак, где именно вы столкнулись с трудностями? – inspectorG4dget

+0

@ inspectorG4dget Я хочу наиболее элегантное и оптимальное решение. – Mark

+0

'sortdictbykeys = lambda mysuperdictionary, mykeyorder: list (map (mysuperdictionary.get, mykeyorder))'. Мы можем, безусловно, помочь вам с вашей домашней работой, объяснив, где вы поступили не так в своей первоначальной попытке. Но для того, чтобы мы это сделали, вам нужно показать нам, что вы пробовали – inspectorG4dget

ответ

5

я мог бы что-то отсутствует, но будет не следующая работа:

[mydict[stackoverflow] for stackoverflow in keyorder] 

должны производить:

[1,2,3] 
+0

Да - это «один очевидный способ сделать это» - и имеет точный результат, который хочет O.P. – jsbueno

+0

Для данного значения, возможно, лучшего. Я думаю, что это лучшее решение, для «более быстрого» решения я бы предложил хранить данные в другой структуре данных. Возможно, что-то из http://www.grantjenks.com/docs/sortedcontainers/ – TWJW