基于其他数组对python中dict的数组进行排序
我有一个dict数组,基于其他数组对python中dict的数组进行排序,python,sorting,Python,Sorting,我有一个dict数组,[{'id':1,'name':'one'},{'id':2,'name':'two'},{'id':3,'name':'three'}]和带有排序id的数组[3,1,2] 预期的结果是 [{'id':3,'name':'three'},{'id':1,'name':'one'},{'id':2,'name':'two'}] 最好的方法是什么 我的代码基于以下两个方面: a = [{'id': 1, 'name': 'one'}, {'id': 2, 'name': 'tw
[{'id':1,'name':'one'},{'id':2,'name':'two'},{'id':3,'name':'three'}]
和带有排序id的数组[3,1,2]
预期的结果是
[{'id':3,'name':'three'},{'id':1,'name':'one'},{'id':2,'name':'two'}]
最好的方法是什么
我的代码基于以下两个方面:
a = [{'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}, {'id': 3, 'name': 'three'}]
b = [3, 1, 2]
res = []
for index in b:
for player in a:
if index == player['id']:
res.append(player)
print(res)
试试这个:
>>> a = [{'id': 1, 'name': 'one'}, {'id':2, 'name': 'two'}, {'id': 3, 'name': 'three'}]
>>> b = [3,1,2]
>>> sorted(a, key= lambda x: l.index(x['id']))
[{'id': 3, 'name': 'three'}, {'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}]
>>> a = [{'id': 1, 'name': 'one'}, {'id':2, 'name': 'two'}, {'id': 3, 'name': 'three'}]
>>> b = [3,1,2]
>>> sorted(a, key= lambda x: l.index(x['id']))
[{'id': 3, 'name': 'three'}, {'id': 1, 'name': 'one'}, {'id': 2, 'name': 'two'}]