Python,按任意顺序对dicts列表进行排序

Mat*_*tt 4 python

可能重复:
按指定的非排序顺序的第三个列表排序列表列表

a = [{'id':1}, {'id':2}, {'id':3}]
b = [2,1,3]
Run Code Online (Sandbox Code Playgroud)

什么是排序的好方法dictlistb.通过该id属性.

结果看起来应该是这样的

[{'id':2}, {'id':1}, {'id':3}]
Run Code Online (Sandbox Code Playgroud)

Izk*_*ata 7

没有巫术是必需的,只要你能保证b已经填充了所有的idS IN a:

In [1]: a = [{'id':1}, {'id':2}, {'id':3}]

In [2]: b = [2,1,3]

In [3]: a.sort(key=lambda v : b.index(v['id']))

In [4]: a
Out[4]: [{'id': 2}, {'id': 1}, {'id': 3}]
Run Code Online (Sandbox Code Playgroud)

(我经常被告知现在lambda应该使用一种替代方案,但这仍然是我知道的最清楚的方法)

编辑: 另请注意,这与链接问题中的此答案几乎完全相同.