假设我有一个collections.OrderedDict
对象和一个重新排列的键列表:
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']
如何对OrderedDict
进行排序,使其按照与key_list
相同的方式进行排序?
答案 0 :(得分:10)
只需创建一个新的OrderedDict:
newdct = OrderedDict((key, olddct[key]) for key in sortedlist)
如果你真的需要到位,你可以清除olddct并用新的更新它:
olddct.clear()
olddct.update(newdct)
答案 1 :(得分:3)
使用以下内容:
def sort_by_list(dict_, list_):
for key in list_:
dict_.move_to_end(key)
sort_by_list(ordereddict, key_list)
仅当list_
包含dict中的所有键以及Python 3.2或更高版本时才有效。