【问题标题】:Sort Python dict by datetime value [duplicate]按日期时间值对Python dict进行排序[重复]
【发布时间】:2013-08-11 16:46:17
【问题描述】:

我有一个这样的 Python 字典:

{
   'apple': datetime.datetime(2012, 12, 20, 0, 0, tzinfo=<UTC>),
   'orange': datetime.datetime(2012, 2, 4, 0, 0, tzinfo=<UTC>),
   'raspberry': datetime.datetime(2013, 1, 9, 0, 0, tzinfo=<UTC>)
}

按日期时间值对字典进行排序的最佳方法是什么?我正在寻找一个列表输出,其中的键按从最新到最旧的顺序排列。

【问题讨论】:

    标签: python datetime dictionary


    【解决方案1】:

    你可以像这样对键进行排序:

    sorted(dct, key=dct.get)
    

    请参阅Sorting Mini-HOW TO,了解有关此排序技术和其他排序技术的说明。

    【讨论】:

      【解决方案2】:

      请记住,问题询问如何按日期时间值进行排序,以下是一个可能的答案:

      sorted(dct.items(), key=lambda p: p[1], reverse=True)
      
      => [('raspberry', datetime.datetime(2013, 1, 9, 0, 0)),
          ('apple', datetime.datetime(2012, 12, 20, 0, 0)),
          ('orange', datetime.datetime(2012, 2, 4, 0, 0))]
      

      如果您只对键感兴趣:

      [k for k, v in sorted(dct.items(), key=lambda p: p[1], reverse=True)]
      
      => ['raspberry', 'apple', 'orange']
      

      【讨论】:

        【解决方案3】:

        这真的很简单,您只需这样做,例如:

         from operator import itemgetter
         sorted(a.items(),key=itemgetter(1),reverse=True)
        

        【讨论】:

        • 这里不需要itemgetter,因为dicts的get方法返回值(见@unutbu的回答)
        【解决方案4】:

        尝试获取字典dict的键列表如下:

        [item[0] for item in sorted(dict.items(), key=lambda val: val[1])]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-22
          • 1970-01-01
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-03
          相关资源
          最近更新 更多