Skip to main content
 首页 » 编程设计

Python:根据项目和外部键对列表进行排序

2025年05月04日13oomusou

我有一个列表如下:

[['a', 123], ['b', 456], ['c', 789]] 

和字符串cba

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

[['c', 789], ['b', 456], ['a', 123]] 

解决此问题的最佳方法是什么?

请您参考如下方法:

这对于基于 key 的 list.sort/sorted 使用非常有效:

mylist = [['a', 123], ['b', 456], ['c', 789]] 
mykey = 'cba' 
 
mylist.sort(key=lambda x: mykey.index(x[0])) 

如果键字符串很大,重复的 index 调用将是低效的(如果这是一个问题,请制作一个 dict 将值映射到单次传递中的索引,例如 mykeydict = {k: i for i, k in enumerate(mykey)}, then key=lambda x: mykeydict[x[0]]), 但对于短到中等长度,index 调用足够便宜(它只对 mylist 中的每个项目执行一次,而不是每次比较都执行一次)。