Wenn es zwei Arrays wie das folgende gibt, möchte ich die Namen entsprechend der Sortierreihenfolge des Alters ersetzen.
names = ["Alice", "Bob", "Charlie"]
ages = [10, 30, 20]
Es funktioniert aber
people = {name: age for name, age in zip(names, ages)}
people = sorted(people.items(), key=lambda x: x[1])
names_sorted = [name for name, _ in people] # ['Alice', 'Charlie', 'Bob']
Diese Methode funktioniert nicht, wenn Personen mit demselben Namen vorhanden sind.
names = ["Alice", "Bob", "Charlie", "Charlie"]
ages = [10, 30, 20, 5]
Im Wörterbuch überschreibt der zweite Charlie den ersten
people = {name: age for name, age in zip(names, ages)}
people = sorted(people.items(), key=lambda x: x[1])
names_sorted = [name for name, _ in people] # ['Alice', 'Charlie', 'Bob']
Wenn Sie es versuchen, ohne es zu einem Wörterbuch zu machen, wird es funktionieren.
people = [[name, age] for name, age in zip(names, ages)]
people = sorted(people, key=lambda x: x[1])
names_sorted = [name for name, _ in people] # ['Charlie', 'Alice', 'Charlie', 'Bob']
Recommended Posts