基于布尔值和日期时间值对列表进行排序

时间:2017-09-01 05:57:19

标签: python list sorting datetime dictionary

我有一个清单:

[{'added_on': datetime.datetime(2017, 8, 30, 13, 1, 40, 84539, tzinfo=<UTC>),
  'priority': False,
  'userEmail': u'xxx@yyy.com',
  'Id': 16123},...]

我需要对它进行整理,使得优先级为True的dicts应按逆时间顺序排在列表之上,其余的则按逆时间顺序排列。

尝试:

List = sorted(List, key=lambda item: item['priority'])
List = sorted(List, key=lambda item: item['added_on'])

按时间顺序排序。

如何实施。

由于

1 个答案:

答案 0 :(得分:2)

如果您要对多个谓词进行排序,则需要sorted处理元组。

lst = sorted(List, key=lambda item: (item['priority'], -item['added_on'].timestamp()) )

第二个参数item['added_on'].timestamp()表示将datetime对象转换为其在epoch中的等效对象,然后反转符号,以便在该谓词上反向排序。