从词典列表中获取最新日期的词典

时间:2020-07-16 13:45:54

标签: json python-3.x django

我有带有日期,名称和状态的字典对象列表。

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"
}

3 个答案:

答案 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'}