我有带有日期,名称和状态的字典对象列表。
elements = [
{
"PersonId": 301178,
"Wwid": "10692133",
"FullNm": "abc",
"CompletionDt": "2015-04-29",
"status": "Complete",
},
{
"PersonId": 301178,
"Wwid": "10692133",
"FullNm": "abc",
"CompletionDt": "2019-07-30",
"status": "complete",
},
{
"PersonId": 301178,
"Wwid": "10692133",
"FullNm": "abc",
"CompletionDt": "2016-08-01",
"status": "Inclomplete",
},
{
"PersonId": 301178,
"Wwid": "10692133",
"FullNm": "abc",
"CompletionDt": "2017-04-10",
"status": "Completed",
},
]
在这本词典中,如何使用python选择最新的标有日期的对象?
在上面的示例中
result= {
"PersonId": 301178,
"Wwid": "10692133",
"FullNm": "abc",
"CompletionDt": "2019-07-30",
"status" : "complete"
}
答案 0 :(得分:1)
这里,我假设随着时间的流逝,对象的ID会越来越大(创建的对象越晚,ID越大),因为比较DateTime
对象会很痛苦-或不必要。
qs = Person.objects.order_by('-id')[0]
基本上,您按照可逆 ID顺序(最大->最小)对其进行排序,然后检索第一项,它将是查询集中最新创建的对象 如果我的上述假设成立。
答案 1 :(得分:1)
result = max(x['CompletionDt'] for x in myList)
答案 2 :(得分:1)
from datetime import datetime
result = sorted(
elements, key=lambda x: datetime.strptime(x["CompletionDt"], "%Y-%m-%d")
)[-1]
或者您可以尝试使用内置的python max
。
result = max(elements, key=lambda x: datetime.strptime(x["CompletionDt"], "%Y-%m-%d"))
输出:
{'PersonId': 301178, 'Wwid': '10692133', 'FullNm': 'abc', 'CompletionDt': '2019-07-30', 'status': 'complete'}