J'ai une base de données avec des millions de dossiers comme celui-ci:Quelle est la meilleure façon d'inverser le tri d'une liste avec ce format de date?
[("Something", "10/08/2017", "something else", "something more", "etc"),
("Something", "16/08/2017", "something else", "something more", "etc"),
("Something", "14/07/2017", "something else", "something more", "etc"),
("Something", "14/08/2017", "something else", "something more", "etc"),
("Something", "15/07/2017", "something else", "something more", "etc"),
("Something", "14/08/2017", "something else", "something more", "etc")]
C'est JJ/MM/YYYY Et je besoin infirmée par la triées 2ème valeur.
Première tentative:
J'ai essayé, mais il ne trie que le jour, et non par mois.
def sort_by(my_list, index):
my_list.sort(key=lambda x: x[index], reverse=True)
return my_list
Image du résultat (ignorer les couleurs, il est de mon GUI): https://image.prntscr.com/image/ZeIgzxNaQ2OD4VX0Yztnhw.png
Comme vous pouvez le voir trie seulement par jour, mais pas par mois, il ne cesse de sauter d'un mois à un autre chaque fois que le jour change. C'est un gâchis total.
Deuxième tentative:
def sort_by_date(my_list, index):
for record, data in enumerate(my_list):
split = data[index].split("/")
altered_record = my_list[record]
altered_record[index] = split[2]+"-"+split[1]+"-"+split[0]
my_list.sort(key=lambda x: x[index], reverse=True)
return my_list
Et ce moment-là je l'ai réalisé ne fonctionnera pas parce que tuples ne permet pas l'attribution de l'article, donc je dois transformer l'ensemble des données dans une liste de listes au lieu d'une liste de tuples. Et même si je fais cela, je doute que ce soit efficace et qu'il faudra beaucoup de temps pour faire le travail.
Ma question est la suivante:
Comment voulez-vous trier une liste de tuples par JJ/MM/AAAA?
Comme par commentaire de @ juanpa.arrivillaga, la sortie désirée est une liste triée inversée par date:
31/12/2017
30/12/2017
29/12/2017
28/12/2017
(And the next days of that month)
30/11/2017
29/11/2017
28/11/2017
27/11/2017
(And so go on)
Edit: Si possible, je veux garder la date comme une chaîne, ne change pas la type de date.
Pouvez-vous décrire * exactement * ce que vous cherchez (comme dans produire la sortie correspondante de votre exemple d'entrée)? –
Aussi, vous dites que vous voulez garder la date comme une chaîne, et pourtant, vous voulez * le traiter comme une date ... pourquoi? –
Sortie souhaitée ajoutée. Et je veux garder le résultat sous forme de chaîne pour l'afficher facilement sur mon interface graphique, car il est plus facile de montrer une chaîne que de la transformer à partir d'une date à chaque fois. Cela pourrait être un mouvement de noob car j'apprends encore Python. – Saelyth