-1
votes

Comment trier une liste de chaînes par chiffres dans la chaîne

Ma question se sépare en deux parties.

D'abord, j'ai besoin de trier une liste comme celle-ci: A = ['Zone 3', 'Zone', 'Zone 9', 'Zone 10', 'Zone 5'] par le numéro de la zone.

Le résultat devrait ressembler à ceci: Résultat = ['Zone', 'ZONE 3', 'ZONE 5', 'ZONE 9', 'ZONE 9', 'ZONE 10']

Je l'ai essayé avec le code suivant: xxx

avec le résultat: xxx

Le problème semble être, que Argsort () Ne reconnaît pas la 10 comme 10 mais comme 1.

Le deuxième problème est accumulé dans le code de folling: xxx

L'erreur d'erreur s'est produite: Index de liste IndexError hors de portée apparaît, mais l'index doit être dans la plage.

J'espère que vous pouvez m'aider avec ces problèmes.


3 Réponses :


1
votes

J'aurais utiliser la fonctionnalité de tri intégrée de Python. Vous pouvez utiliser le paramètre code> clé code> pour personnaliser la manière dont votre liste est en fait triée.

Par exemple: P>

a = ['Zone 3', 'Zone', 'Zone 9', 'Zone 10', 'Zone 5']

def zone_key(l):
    try:
        _, v = l.split(' ')
        return int(v)
    except ValueError:
        return 0

print(sorted(a, key=zone_key))


0 commentaires

0
votes

C'est donc simple xxx

cela fonctionnera cutané.


0 commentaires

0
votes

Selon @hurlenko check NATSORT :

['Zone', 'Zone 3', 'Zone 5', 'Zone 9', 'Zone 10']


0 commentaires