How do I sort this list in Python, if my date is in a String?

前端 未结 5 959
一整个雨季
一整个雨季 2020-11-29 08:38
[{\'date\': \'2010-04-01\', \'people\': 1047, \'hits\': 4522}, {\'date\': \'2010-04-03\', \'people\': 617, \'hits\': 2582}, {\'date\': \'2010-04-02\', \'people\': 73         


        
相关标签:
5条回答
  • 2020-11-29 09:11

    In python 2.6 you can use soerted w/operator.itemgetter. Since date is YYYY-MM-DD it is sorted even though its a string cause its largest to smallest - i use that format all the time for this reason

    >>> import operator
    >>> l = [{'date': '2010-04-01','people': 1047, 'hits': 4522}, 
             {'date': '2010-04-03', 'people': 617, 'hits': 2582}, 
             {'date': '2010-04-02', 'people': 736, 'hits': 3277}]
    >>> sorted( l, key = operator.itemgetter('date') )
    [{'date': '2010-04-01', 'hits': 4522, 'people': 1047}, {'date': '2010-04-02', 'hits': 3277, 'people': 736}, {'date': '2010-04-03', 'hits': 2582, 'people': 617}]
    
    0 讨论(0)
  • 2020-11-29 09:15

    Satoru.Logic's solution is clean and simple. But, per Alex's post, you don't need to manipulate the date string to get the sort order right...so lose the .split('-')

    This code will suffice:

    records.sort(key=lambda x:x['date'])
    
    0 讨论(0)
  • 2020-11-29 09:19
    records = [
         {'date': '2010-04-01', 'people': 1047, 'hits': 4522}, 
         {'date': '2010-04-03', 'people': 617, 'hits': 2582}, 
         {'date': '2010-04-02', 'people': 736, 'hits': 3277}
         ]
    records.sort(key=lambda x: x['date'].split('-'))
    
    0 讨论(0)
  • 2020-11-29 09:23

    Fortunately, ISO format dates, which seems to be what you have here, sort perfectly well as strings! So you need nothing fancy:

    import operator
    yourlistofdicts.sort(key=operator.itemgetter('date'))
    
    0 讨论(0)
  • 2020-11-29 09:26
    .sort(key=lambda x: datetime.datetime.strptime(x['date'], '%Y-%m-%d'))
    
    0 讨论(0)
提交回复
热议问题