排序提供订单的字典列表

Pyt*_*ast 5 python sorting dictionary list

我有一份清单

order = [8, 7, 5, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)

和一个词典列表

list_of_dct = [{'value':11}, {'value':8}, {'value':5}, {'value':7}, {'value':10}, {'value':9}]
Run Code Online (Sandbox Code Playgroud)

我想list_of_dctorder列表中给出的顺序对此进行排序,即输出应如下:

list_of_dct = [{'value':8}, {'value':7}, {'value':5}, {'value':9}, {'value':10}, {'value':11}]
Run Code Online (Sandbox Code Playgroud)

我知道如何按给定排序key,但不知道订单已经给出.我怎么排序呢?

PS:我已经有了O(n ^ 2)解决方案.寻找更好的解决方案.

SIs*_*lam 5

使用order列表的索引进行排序 - 只要尝试每个字典都有一个值,并且您希望按该值排序 -

sorted(list_of_dct,key=lambda x:order.index(x.values()[0]))
Run Code Online (Sandbox Code Playgroud)

但是,如果一个键有多个值,则更改[0]要排序的索引(即).