a.sort(key=lambda x: b.index(x[0]))
这
a使用
b每个元组的第一个元素的index in
a作为对其进行排序的值就地进行排序。
另一种可能更简洁的书写方式是:
a.sort(key=lambda (x,y): b.index(x))
如果您有大量项目,则做一些不同的事情可能会更有效率,因为
.index()在长列表上可能是一项昂贵的操作,并且由于您已经知道顺序,因此实际上不需要进行完全排序:
mapping = dict(a)a[:] = [(x,mapping[x]) for x in b]
请注意,这仅适用于2元组的列表。如果您希望它适用于任意长度的元组,则需要对其进行一些修改:
mapping = dict((x[0], x[1:]) for x in a)a[:] = [(x,) + mapping[x] for x in b]



