Python:基于项和外键的排序列表

Sub*_*beh 1 python sorting

我有一个列表如下:

[['a', 123], ['b', 456], ['c', 789]]
Run Code Online (Sandbox Code Playgroud)

和字符串 cba

我想根据第一项和字符串cba所在的顺序对列表进行排序:

[['c', 789], ['b', 456], ['a', 123]]
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

Sha*_*ger 7

这工作得很好与key基于使用list.sort/ sorted:

mylist = [['a', 123], ['b', 456], ['c', 789]]
mykey = 'cba'

mylist.sort(key=lambda x: mykey.index(x[0]))
Run Code Online (Sandbox Code Playgroud)

如果密钥字符串是巨大的,重复index调用将是低效的(dict如果那是一个问题mykeydict = {k: i for i, k in enumerate(mykey)},那么在一次传递中将值映射到索引,例如,然后key=lambda x: mykeydict[x[0]]),但是对于短到中等长度,index调用足够便宜(它仅执行每个项目一次mylist,而不是每次比较).