0
votes

Comment trier les chaînes contenant des chiffres et des lettres?

J'ai une liste dans le formulaire suivant:

['2012', '2011', '2010', ... , '2003', '2002', 'AK 20', 'AK 35', 'AK 40']


1 commentaires

De vos recherches, vous connaissez probablement déjà la touche = . Alors essayez d'écrire une fonction à utiliser comme clé qui fait ce que vous voulez. Ce n'est pas obligé d'être une Lambda. Vous pouvez simplement écrire une fonction qui indique à la fonction de tri ce qu'il trier. Par exemple, vous pourriez avoir une fonction qui calcule l'âge d'une personne du genre de chaînes que vous utilisez.


4 Réponses :


0
votes

Si vos chaînes partagent le même préfixe ( ak dans ce cas), vous pouvez utiliser la fonction lambda lambda xxx

l est votre liste initiale, pour votre exemple, cette sortie: xxx

Les fonctions ci-dessus trient en premier par les chaînes d'année (le - dans -Len (e) est utilisé pour les trier dans l'ordre décroissant), il trie les groupes d'âge dans l'ordre croissant par le numéro après le préfixe AK (en filtrant tout ce qui n'est pas un chiffre de la chaîne des groupes d'âge).


0 commentaires

0
votes
seq = ['AK 40', 'AK 35', 'AK 20', '2012', '2011', '2010', '2009', '2009',
       '2007', '2006', '2006', '2005', '2004', '2003', '2003', '2002']

years = [year for year in seq if year.isdigit()]
aks = [ak for ak in seq if not ak.isdigit()]
years.sort()
aks.sort()
result = years[::-1] + aks
print(result)

0 commentaires

0
votes
sorted_list = sorted(x, key = lambda e : int(e.replace('AK ', '-')), reverse=True)

0 commentaires

0
votes

Vous pouvez utiliser une clé de tri simple: xxx

sortie: xxx


1 commentaires

Pourriez-vous couramment expliquer ce que cette fonction Lambda fait? Je suis relativement nouveau à Python et je suis toujours inconnu avec ces syntaxes [1, -1]. int (x.split () [- 1]) renvoie le numéro de ak 25 suis-je correct? Mais je ne comprends pas le reste de la fonction.