Last active
August 29, 2015 14:06
-
-
Save nealtodd/1048d9bbec40013d4b16 to your computer and use it in GitHub Desktop.
Reorder OrderedDict
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def reorder_ordereddict(ordered_dict, key_order): | |
""" | |
Return a new OrderedDict using a source ordered_dict and key_order iterable. | |
Any keys in ordered_dict that are not in key_order will be added | |
in their original order to the end of the returned OrderedDict. | |
KeyError will be raised for keys in key_order that are not in ordered_dict. | |
Intended for specifiying the order of Form.fields without having to create | |
them in the required order. | |
""" | |
return OrderedDict( | |
[(k, ordered_dict[k]) for k in key_order] | |
+ [(k, ordered_dict[k]) for k in ordered_dict.keys() if k not in key_order] | |
) | |
# ordered_dict = OrderedDict([('a','A'),('b','B'),('c','C'),('d','D')]) | |
# key_order = ('d','b') | |
# reorder_ordereddict(ordered_dict, key_order) | |
# >>> OrderedDict([('d', 'D'), ('b', 'B'), ('a', 'A'), ('c', 'C')]) | |
# | |
# In a Form: | |
# key_order = ['fieldC', 'fieldB'] | |
# self.fields = reorder_ordereddict(self.fields, key_order) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment