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

标签 python sorting

我有一个列表如下:

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

和字符串cba

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

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

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

最佳答案

这对于基于 keylist.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 中的每个项目执行一次,而不是每次比较都执行一次)。

关于Python:根据项目和外部键对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264370/

相关文章:

python - 如何在所有列上使用 RobustScaler?

mysql - where in 子句 mysql 按相关性排序

javascript - 根据另一个数组中定义的顺序对 Javascript 中的数组进行排序

ios - 快速排序具有许多关系的实体数组

python - 装饰 lxml.etree._Element 方法

python - 在带有 PySpark 的单个多核机器中使用大型查找表

javascript - 如何在javascript中对混合数字/字母数字数组进行排序

R:查找列总和最大的列

python - 使用 VSCode 连接到 Jupyter 实例

python - 在 ChartMogul API 上使用 Python 请求