Python 列表排序取决于项目是否在另一个列表中

标签 python list sorting

假设我有一个列表:

A = [1,2,3,4,5,6,7,8,9,0]

和第二个列表:

B = [3,6,9]

什么是对列表 A 进行排序的最佳方式,以便与列表 B 中的项目匹配的任何内容都将出现在开头,以便结果为:

[3,6,9,1,2,4,5,7,8,0]

最佳答案

>>> A = [1,2,3,4,5,6,7,8,9,0]
>>> B = [3,6,9]
>>> sorted(A,key=lambda e: e not in B)
[3, 6, 9, 1, 2, 4, 5, 7, 8, 0]

这是如何工作的:

sorted 根据 key(element) 的结果对每个元素进行排序(key 的默认值为 None 导致它直接根据元素进行排序)。

在我们的例子中,lambda lambda e: e not in B 将返回 True if e isn' B 中的 t,或者 False 如果 e B 中的强>。 False 的元素排在最前面,您最终得到结果。如下所示:

>>> sorted([True,False,False])
[False, False, True]

关于Python 列表排序取决于项目是否在另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586061/

相关文章:

python - 怎么把500Hz csv数据文件转换成wav音频文件?

python - 有没有办法将整数转换为向上计数的整数列表?

python - 如何使用 Python Urwid 进行类似 UI 的聊天?

list - 在Scheme中的列表中添加元素

java - 按频率排序单词? (从最低到最高)

arrays - 如何根据一列元素的频率对矩阵的行进行排序?

Python:tempfile.mkdtemp 和 tempfile.TemporaryDirectory 之间的区别

c - 如何将链表从一个文件传递到同一项目中的另一个文件?

java - 在Java中的Collections对象中声明类型参数两次

在hadoop中对输出文本文件进行排序,有没有办法不排序就可以查看输出?或使用不同的排序方法?