您還沒有回答我關於如何處理「空」日期的問題 - 我假定您的意思是None
的值 - 因此以下可能正確處理這些日期。
你在一個不同的答案下評論了「但是我需要obj與空值在他們的索引中」,所以我實現了這樣做,否則在從第二個列表插入元素時保留原始順序可以以任何順序......並且它似乎不會非常慢(或掛起)。
import datetime
class Object(object):
def __init__(self, date_string=None):
self.date = (date_string if date_string is None else
datetime.datetime.strptime(date_string, "%Y%m%d"))
def __repr__(self):
return '{}({!r})'.format(self.__class__.__name__,
self.date.strftime("%Y%m%d") if self.date
else None)
obj1 = Object('20171001')
obj2 = Object('20171002')
obj3 = Object(None)
obj4 = Object('20171004')
obj5 = Object('20171005')
obj6 = Object('20171006')
obj7 = Object('20171007')
obj8 = Object('20171008')
obj9 = Object('20171009')
l1 = [obj1, obj2, obj3, obj4, obj5]
l2 = [obj9, obj6, obj7, obj8]
print('Before:')
print(l1)
print(l2)
for elem2 in l2:
for i, elem1 in enumerate(l1):
if elem1.date and elem2.date < elem1.date:
l1.insert(i, elem2)
break
else:
l1.append(elem2)
print('After:')
print(l1)
輸出:
Before: [Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005')] [Object('20171009'), Object('20171006'), Object('20171007'), Object('20171008')]
After: [Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005'), Object('20171006'), Object('20171007'), Object('20171008'), Object('20171009')]
`
有沒有錯誤?哪部分是'不工作'? – brddawg
模板的結果將顯示仍然加載,並且沒有列表顯示在 – rahma
如何處理插入它們並維護排序的對象時,如何處理具有'None'的日期? – martineau