J'ai une liste dans le formulaire suivant:
['2012', '2011', '2010', ... , '2003', '2002', 'AK 20', 'AK 35', 'AK 40']
4 Réponses :
Si vos chaînes partagent le même préfixe ( Où Les fonctions ci-dessus trient en premier par les chaînes d'année (le ak code> dans ce cas), vous pouvez utiliser la fonction lambda code> lambda > pré> xxx pré> l code> est votre liste initiale, pour votre exemple, cette sortie: p> - code> dans -Len (e) code> 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 code> (en filtrant tout ce qui n'est pas un chiffre de la chaîne des groupes d'âge). p> p>
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)
sorted_list = sorted(x, key = lambda e : int(e.replace('AK ', '-')), reverse=True)
Vous pouvez utiliser une clé de tri simple: sortie: p>
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]) code> renvoie le numéro de ak 25 code> suis-je correct? Mais je ne comprends pas le reste de la fonction.
De vos recherches, vous connaissez probablement déjà la touche
= code>. 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.