我想根據日期對字典列表進行排序。如何忽略無效輸入或在排序函數中添加除代碼之外的嘗試?
下面的代碼是工作得很好,我的數據格式是修復IE DD/MM/YYYY
代碼:
[{'date': '10/10/2015'},
{'date': '11/10/2015'},
{'date': '01/01/2015'},
{'date': '10/12/2014'},
{'date': '01/01/2014'},
{'date': '2015'}]
In [20]: a.pop()
Out[20]: {'date': '2015'}
In [21]: sorted(a, key=lambda x: datetime.datetime.strptime(x['date'], "%d/%m/%Y"), reverse=False)
Out[21]:
[{'date': '01/01/2014'},
{'date': '10/12/2014'},
{'date': '01/01/2015'},
{'date': '10/10/2015'},
{'date': '11/10/2015'}]
但我也有時間值不能與DD/MM搭配/ yyyy格式。 獲取以下情況除外:
代碼2:
In [22]: a.append({"date":"2015"})
In [23]: sorted(a, key=lambda x: datetime.datetime.strptime(x['date'], "%d/%m/%Y"), reverse=False)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-abd07eed54eb> in <module>()
----> 1 sorted(a, key=lambda x: datetime.datetime.strptime(x['date'], "%d/%m/%Y"), reverse=False)
<ipython-input-23-abd07eed54eb> in <lambda>(x)
----> 1 sorted(a, key=lambda x: datetime.datetime.strptime(x['date'], "%d/%m/%Y"), reverse=False)
/usr/lib/python2.7/_strptime.py in _strptime(data_string, format)
323 if not found:
324 raise ValueError("time data %r does not match format %r" %
--> 325 (data_string, format))
326 if len(data_string) != found.end():
327 raise ValueError("unconverted data remains: %s" %
ValueError: time data '2015' does not match format '%d/%m/%Y'
In [24]:
如何sorted
函數處理這種投入?
謝謝你,但是'語法錯誤:無效syntax' –
@VivekSable看到更新 –
確定。 Upvoted。我會檢查.. –