На самом деле вам не нужно время strptime, поскольку ваш формат YYYY-MM-DD:
data = [
{
"name":"Shah",
"date":"2019-12-07"
},
{
"name":"john",
"date":"2019-12-05"
},
{
"name":"dave",
"date":"2019-12-01"
},
{
"name":"dave",
"date":"null"
},
]
if __name__ == "__main__":
sorted_date = sorted(data, key=lambda x: x["date"])
print(sorted_date)
И поскольку в ASCII числа идут перед символами, все даты будут перед строкой «null». Однако это не будет работать, если null представлен пустой строкой. В этом случае вы можете использовать (с ужасным отступом):
data = [
{
"name":"Shah",
"date":"2019-12-07"
},
{
"name":"john",
"date":"2019-12-05"
},
{
"name":"dave",
"date":"2019-12-01"
},
{
"name":"dave",
"date":"null"
},
]
null_values = {"null", ""}
if __name__ == "__main__":
sorted_date = sorted(data, key=lambda x: x["date"] if x["date"]
not in null_values else "9999-99-99")
print(sorted_date)
, если вместо этого вы wi sh отфильтруете нулевые значения, чтобы они даже не появлялись в результатах, тогда генератор путь к go:
sorted_date = sorted((item for item in data if item["date"] not in null_values),
key=lambda x: x["date"])