我需要排序我的字典由另一个决定您订单的元素。
unsorted_dict = {'potato':'whatever1', 'tomato':'whatever2', 'sandwich':'whatever3'}
这种排序可以作为列表或字典,以较容易的方式出现。
ordination = ['sandwich', 'potato', 'tomato']
排序后的词典:
sorted_dict = {'sandwich':'whatever3', 'potato':'whatever1', 'tomato':'whatever2'}
答案 0 :(得分:1)
您可以像这样使用OrderedDict
:
from collections import OrderedDict
sorted_dict = OrderedDict([(el, unsorted_dict[el]) for el in ordination])
它的作用是使用ordination
作为第一个元素并使用unsorted_dict
中的值作为第二个元素创建元组(对)列表,然后OrderedDict
使用此列表创建一个元组通过插入排序的字典。
它具有与dict
相同的接口,并且不引入任何外部依赖项。
编辑:在python 3.6+中,普通dict
也将保留插入顺序。
答案 1 :(得分:0)
我认为这是最简单的方法:
sorted_dict = dict()
sorted_list = list((i, unsorted_dict.get(i)) for i in ordination)
for i in sorted_list:
sorted_dict.setdefault(i[0], i[1])
结果是:
{'sandwich': 'whatever3', 'potato': 'whatever1', 'tomato': 'whatever2'}
这和第二个答案一样,首先创建一个排序对的元组,但不依赖于任何外部库。