根据Python中的另一个列表对字典列表进行排序

时间:2017-07-22 09:23:02

标签: python list dictionary

我有一个dicts列表和一个这样的列表:

dicts = [{"id": 1}, {"id": 4}, {"id": 7}, {"id": 0}]
ids = [7, 1, 0]

我想按照这样的顺序来判断订单的结果:

[{"id": 7}, {"id": 1}, {"id": 0}]

3 个答案:

答案 0 :(得分:4)

id_dict = {d['id']: d for d in dicts}
print([id_dict[i] for i in ids])

如果ids可能包含任何dict中没有的ID,只需添加一个条件:

[id_dict[i] for i in ids if i in id_dict]

答案 1 :(得分:0)

sorted(dicts, key = lambda item: ids.index(item['id']))

请注意,如果某个ID位于ids列表中,则不会考虑这一点(因为您的数据会失败,因为列表中缺少4)。

答案 2 :(得分:0)

你不能重新排列字典,因为它们是python中的映射类型对象,所以你可以做一件事,如果你想要按顺序打印字典项,那么你需要通过调用.values()按降序排列值