0
votes

Trier la liste d'objet par date

J'ai une liste de dicttes qui ressemblent à ceci xxx

i utilisé xxx

pour les trier cependant, il met en 2019 à le fond. Lorsque j'ajouterai Reverse = true il inverse les mois aussi. J'ai essayé d'utiliser Obj ["tournois ']. Trier (Key = Lambda x: Tournoi [' date ']) , mais cela revient simplement les dicts dans le même ordre. Je dois retourner la liste des dicttes triés d'ici année 2019, puis triés par mois, puis triés par jour.


0 commentaires

3 Réponses :


3
votes

Utilisez une clé de tri du format yyyymmdd. (Vos dates sont au format mm-dd-aaaa aaaa aaaa.) xxx

donne: xxx


1 commentaires

@AustinJohnson est la bienvenue. Au fait, l'utilisation d'un tuple au lieu de la concaténation de chaîne fonctionnerait également: (t ["date"] [6:], T ["date"] [: 2], t ["date"] [3: 5])



1
votes

Les dates sont représentées comme des cordes et triées lexicographiquement. C'est pourquoi, par exemple, '10 -08-2019 ' est commandé après '07 -02-2020' .

Une solution de contournement serait d'analyser les cordes dans DateTime.DateTime Objets dans le but de tri du tri. xxx


0 commentaires

0
votes

solution

une autre option forte> em> pourrait être de trier les dictionnaires à l'aide de Pandas code> bibliothèque. Maintenant, cela pourrait être discutable car parfois vous n'avez peut-être pas besoin d'apporter des pandas, cependant, cela dépendrait du type de problème / exigence que vous travaillez. Il est souvent plus facile de visualiser et de traiter les données avec des pandas également. P>

Je vous laisserais à vous de déterminer si vous souhaitez utiliser des pandas pour cette tâche ou non, pendant que je laisse une note sur la façon dont la facilité Vous pouvez visualiser le résultat et le trier avec des pandas. p> xxx pré>

charge et trier la liste des dictionnaires h2>

La solution d'une ligne est: P>

obj = {
    "Tournaments": [
      {
        "Scrambling": "61.90",
        "Total_Putts_GIR": 85,
        "SG_Putting": 0.99,
        "Tournament": "Sony_Open",
        "Date": "01-09-2020"
      },
      {
        "Scrambling": "68.75",
        "Total_Putts_GIR": 93,
        "SG_Putting": 1.1,
        "Tournament": "Waste_Management",
        "Date": "01-30-2020"
      },
      {
        "Scrambling": "64.71",
        "Total_Putts_GIR": 70,
        "SG_Putting": -0.26,
        "Tournament": "WGC_Mexico",
        "Date": "02-20-2020"
      },
      {
        "Scrambling": "57.14",
        "Total_Putts_GIR": 40,
        "SG_Putting": -1.45,
        "Tournament": "Charles_Schwab",
        "Date": "06-11-2020"
      },
      {
        "Scrambling": "73.68",
        "Total_Putts_GIR": 82,
        "SG_Putting": 1.65,
        "Tournament": "RBC_Heritage",
        "Date": "06-18-2020"
      },
      {
        "Scrambling": "66.67",
        "Total_Putts_GIR": 92,
        "SG_Putting": 0.34,
        "Tournament": "Rocket_Mortgage",
        "Date": "07-02-2020"
      },
      {
        "Scrambling": "83.33",
        "Total_Putts_GIR": 101,
        "SG_Putting": 1.19,
        "Tournament": "Shriners_Hospital_for_Children_Open",
        "Date": "10-08-2019"
      }
    ]
}


0 commentaires