Quand il y a deux tableaux comme celui ci-dessous, je veux remplacer les noms selon l'ordre de tri des âges.
names = ["Alice", "Bob", "Charlie"]
ages = [10, 30, 20]
Cela fonctionne, mais
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']
Cette méthode ne fonctionne pas s'il y a des personnes portant le même nom.
names = ["Alice", "Bob", "Charlie", "Charlie"]
ages = [10, 30, 20, 5]
Quand je fais un dictionnaire, le second Charlie écrase le premier
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']
Si vous l'essayez sans en faire un dictionnaire, cela fonctionnera.
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