在 Python 中按另一个列表对列表进行排序
通常,当我们对列表进行排序时,我们会按升序或降序进行排序。但是,我们可以根据 Python 中另一个列表的顺序对列表进行排序。
我们将学习如何根据本文中另一个列表中的值对给定列表进行排序。
使用 zip()
和 sorted()
函数根据 Python 中的另一个列表对列表进行排序
在这个方法中,我们将使用 zip()
函数通过组合两个给定的列表来创建第三个对象,第一个必须排序,第二个依赖于排序。
然后我们可以使用 sorted()
函数,它从排序和压缩的列表中提取每对给定列表的第一个元素。
A = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
B = [0, 1, 1, 0, 1, 2, 2, 0, 1]
result_list = [i for _, i in sorted(zip(B, A))]
print(result_list)
输出:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
使用 NumPy
模块根据 Python 中的另一个列表对列表进行排序
在这种方法中,我们将列表转换为 NumPy
数组,然后将排序算法应用于列表。我们使用 argsort()
函数对排序所依赖的数组进行排序,然后使用这些值来过滤第二个数组。
请参考以下示例。
import numpy
A = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
B = [0, 1, 1, 0, 1, 2, 2, 0, 1]
A = numpy.array(A)
B = numpy.array(B)
inds = B.argsort()
sorted_a = A[B]
print(sorted_a)
输出:
['r' 's' 's' 'r' 's' 't' 't' 'r' 's']
要获取列表中的最终数据,请使用 tolist()
函数。
使用 more_itertools.sort_together
根据 Python 中的另一个列表对列表进行排序
more_itertools
模块是对 itertools
模块的扩展。sort_together
函数返回排序在一起的输入可迭代对象,将 key_list
参数中的列表作为排序的优先级。
例如,
from more_itertools import sort_together
X = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
Y = [0, 1, 1, 0, 1, 2, 2, 0, 1]
s = sort_together([Y, X])[1]
print(list(s))
输出:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
我们需要使用 list()
函数以列表形式获取最终结果。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串