Liste nach einer anderen Liste in Python sortieren

Shivam Arora 30 Januar 2023
  1. Verwenden Sie die Funktionen zip() und sorted(), um die Liste basierend auf einer anderen Liste in Python zu sortieren
  2. Verwenden Sie das Modul NumPy, um die Liste basierend auf einer anderen Liste in Python zu sortieren
  3. Verwenden Sie more_itertools.sort_together, um die Liste basierend auf einer anderen Liste in Python zu sortieren
Liste nach einer anderen Liste in Python sortieren

Wenn wir Listen sortieren, tun wir dies im Allgemeinen in aufsteigender oder absteigender Reihenfolge. Wir können eine Liste jedoch basierend auf der Reihenfolge einer anderen Liste in Python sortieren.

In diesem Artikel erfahren Sie, wie Sie eine bestimmte Liste basierend auf den Werten einer anderen Liste sortieren.

Verwenden Sie die Funktionen zip() und sorted(), um die Liste basierend auf einer anderen Liste in Python zu sortieren

In dieser Methode verwenden wir die Funktion zip(), um ein drittes Objekt zu erstellen, indem wir die beiden gegebenen Listen kombinieren, von denen die erste sortiert werden muss und die zweite, von der die Sortierung abhängt.

Wir können dann die Funktion sorted() verwenden, die die ersten Elemente jedes Paares der gegebenen Listen aus der sortierten und gezippten Liste extrahiert.

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)

Ausgabe:

['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']

Verwenden Sie das Modul NumPy, um die Liste basierend auf einer anderen Liste in Python zu sortieren

Bei dieser Methode wandeln wir die Listen in NumPy-Arrays um und wenden dann den Sortieralgorithmus auf die Listen an. Wir sortieren das Array, von dem die Sortierung abhängt, mit der Funktion argsort() und verwenden dann diese Werte, um das zweite Array zu filtern.

Siehe das folgende Beispiel.

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)

Ausgabe:

['r' 's' 's' 'r' 's' 't' 't' 'r' 's']

Um die endgültigen Daten in einer Liste zu erhalten, verwenden Sie die Funktion tolist().

Verwenden Sie more_itertools.sort_together, um die Liste basierend auf einer anderen Liste in Python zu sortieren

Das Modul more_itertools ist eine Erweiterung des Moduls itertools. Die Funktion sort_together gibt die Eingabe-Iterables zusammen sortiert zurück, mit der Liste im Argument key_list als Priorität für die Sortierung.

Zum Beispiel,

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))

Ausgabe:

['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']

Wir müssen die Funktion list() verwenden, um das Endergebnis als Liste zu erhalten.

Verwandter Artikel - Python List