-1
votes

Comment trier plusieurs liste dans Python

J'essaie de trier plusieurs listes en fonction de la liste d'âge de haut en bas. Mais cela me donne toujours des erreurs.

def age(last,name,birthday):
ages=['32','21','35']
names=['Mattie','Meaghan','Gladys']
lasts=['Poquette','Garufi','Rim']
ctr=1
"""I tried the line below but it gives me error! error message: ages,lasts,names = zip(*sorted(zip(ages,lasts,names)))
  ValueError: not enough values to unpack (expected 3, got 0)
   """
 ages,lasts,names = zip(*sorted(zip(ages,lasts,names)))

for bday in birthday:
   my_date = bday
   b_date = datetime.strptime(my_date, '%m/%d/%Y')
   age=("%d" % ((datetime.today() - b_date).days / 365))
   ages.append(age)
for l in last:
   lasts.append(l)
for n in name:
    names.append(n)
# Iwant this to be sorted by age
for a,l,n in zip(ages,lasts,names):
    print(f"{ctr} Employee name {l}, {n} Age:{a}") 
    ctr+=1


0 commentaires

4 Réponses :


0
votes

essayez de stocker vos données dans le dictionnaire comme l'âge comme clé et une liste ayant un nom et un dernier élément. Ensuite, vous pouvez trier à l'âge facilement.

Dictionnaire: élément clé Âge -> [nom, dernier]


2 commentaires

Merci pour la réponse mais j'ai essayé de stocker dans le dictionnaire, mais elle stocke seulement 20%, j'ai 600 étudiants en tant que données. Quand j'ai essayé ce code dicny [a] = l, n il stocke uniquement 20% des données.


Je pense que parce que vos données ont des valeurs en double pour l'âge.



1
votes

Je n'ai pas eu de problèmes avec cette solution xxx

sortie:

('21', '32', '35') ('Garufi', 'Pochette', 'Rim') ("Matghan", "Mattie", "Gladys")

Mais j'ai reconnu, si je sauvegardez l'objet Zip dans une variable d'abord, puis imprimez-la sous la liste et utilisez cet objet ZIP ultérieurement pour le tri, puis je reçois la même erreur que vous. xxx

sortie:

[('21', 'Garufi', 'Meaghan'), ('32', 'Pochette', 'Mattie'), ('35', 'Rim', 'Gladys')]

Traceback (appel le plus récent):

fichier "c: / utilisateurs / * / bureau / test.py", ligne 9, dans

âges, dure, noms = zip (* trié (z))

ValueError: Pas assez de valeurs pour déballer (attendu 3, got 0)

Peut-être que cela vous aidera.


0 commentaires

1
votes

Essayez ceci xxx


0 commentaires

0
votes

Pour ce type de fonctionnement, vous pouvez également stocker vos données dans une structure de type tableau, telle qu'une pandas Dataframe . xxx

puis personnes aimerait ce Dataframe:

personnes Dataframe

et enfin, vous pouvez utiliser .sort_values ​​() méthode Pour trier vos données par la colonne que vous voulez, par exemple par dure en faisant: xxx

triframe de tri


0 commentaires