¿Cómo ordenar OrderedDict usando una lista ordenada de claves?

Supongamos que tengo un objeto Collections.OrderedDict y una lista reorganizada de sus claves:

 ordereddict = collections.OrderedDict(( ('key_78', 'value'), ('key_40', 'value'), ('key_96', 'value'), ('key_53', 'value'), ('key_04', 'value'), ('key_89', 'value'), ('key_52', 'value'), ('key_86', 'value'), ('key_16', 'value'), ('key_63', 'value'), )) # Example only; actual list will **not** == sorted(ordereddict) key_list = ['key_04', 'key_16', 'key_40', 'key_52', 'key_53', 'key_63', 'key_78', 'key_86', 'key_89', 'key_96'] 

¿Cómo puedo ordenar OrderedDict para que se ordene de la misma manera que key_list ?

Solo crea un nuevo OrderedDict:

 newdct = OrderedDict((key, olddct[key]) for key in sortedlist) 

Si realmente necesita que esto suceda en su lugar , puede borrar el olddct y actualizarlo con el nuevo:

 olddct.clear() olddct.update(newdct) 

Usa lo siguiente:

 def sort_by_list(dict_, list_): for key in list_: dict_.move_to_end(key) sort_by_list(ordereddict, key_list) 

Esto solo funciona si la list_ contiene todas las claves en el dict, y en Python 3.2 o posterior.