我有一个基本清单
li = ['fca', 'fc_add', 'fca_2', 'fcadd_2', 'Red_Exis', 'G_Exis', 'P_Exis', 'fam_1']
并希望使用列表中项目的索引位置对以下字典进行排序
其中列表项是键。
dic = {'G_Exis': 'abc', 'fca': '210Y', 'Red_Exis': 107, 'fc_add': '999 Des ST.'}
我需要最终排序的字典如下所示:
fin_dic = {'fca': '210Y', 'fc_add': '999 Des ST.', 'Red_Exis': 107, 'G_Exis': 'abc'}
提前致谢了。
答案 0 :(得分:2)
Dict不守订单,请使用collections.OrderedDict
:
from collections import OrderedDict
od = OrderedDict()
for item in li:
if item in dic:
od[item] = dic[item]
print od
OrderedDict([('fca', '210Y'), ('fc_add', '999 Des ST.'), ('Red_Exis', 107),
('G_Exis', 'abc')])
或作为oneliner:
OrderedDict(sorted(dic.items(), key=lambda t: li.index(t[0])))