2017-10-14 6 views
-2

J'ai essayé pendant quelques heures maintenant mais je ne peux pas le faire réparer (je suis nouveau au codage/python).Comment puis-je les trier?

with open('spelers.csv', 'r') as speler_lijst: 
       spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"') 
       for line in spelers_lijst_lezen: 
        print(line[0],"\t", line[1]) 

donc je l'ai qu'il imprime toutes mes entrées à partir du fichier csv comme:

1 Name 1 
5 Name 5 
10 Name 10 
2 Name 2 

Maintenant, je voudrais les trier. Mais toutes les choses que j'ai essayées me donnent des erreurs ou pas l'effet souhaité.

Merci

+2

S'il vous plaît montrer ce que vous avez essayé et les erreurs que vous obtenez. –

+0

Pourriez-vous ajouter le fichier CSV afin que nous puissions exécuter un exemple de travail? Vous pourriez vouloir regarder numpys argsort-fonction. – Stein

+0

Comment ajouter le csv? (Désolé pour le codage et ce site) – rawdps

Répondre

1

Essayez:

with open('spelers.csv', 'r') as speler_lijst: 
    spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"') 
    for line in sorted(spelers_lijst_lezen, key=lambda i: i[0]): 
     print(line[0],"\t", line[1]) 

Dans l'indice lambda d'utilisation de la fonction que vous souhaitez trier

EDIT: si votre clé de tri n'est pas chaîne cast utilisation int:

sorted(spelers_lijst_lezen, key=lambda i: int(i[0])) 
+0

Cela fonctionne pour le tri en effet, ce qui en fait un pas de plus. Mais il trie sur le premier chiffre, puis deuxième etc. Donc 1, 10, 11, 2, 20, 21, etc Je pense que c'est parce que j'ai fait ceux-ci en dehors des entrées plus tôt. Donc, je devrais faire la première partie dans un int je suppose que – rawdps

+0

Vous pouvez vouloir 'int (i [0])' dans la fonction clé, puisque le tri devrait probablement être fait numériquement ('10' va après' 2' dans un tri numérique, alors que '" 10 "' devance '" 2 "' dans un tri de chaînes lexicographiques. – Blckknght

+0

Oui, le problème a été corrigé. Merci a tous – rawdps