के लिए डेटाटाइम की सूची की तुलना करें मेरे पास विशिष्ट स्थिति के आधार पर तिथियों के सेट बनाने का कार्य है, उदाहरण के लिए "2 से अधिक" पारित किया जाएगा और मुझे इस महीने की सभी तिथियों का एक सेट बनाना होगा एक दिन> 2. बीमार भी एक प्रारंभ समय और उदाहरण के लिए एक बंद समय हो रही हैडेटाटाइम
greater > 2 less < 9
start time :10am
stop time :6 pm
month:july
date1: 2016-07-03 10:00, 2016-07-03 16:00
date2: 2016-07-04 10:00, 2016-07-04 16:00
date3: 2016-07-05 10:00, 2016-07-05 16:00
.
.
.
date6: 2016-07-8 10:00, 2016-07-8 16:00
मैं स्टोर करने के लिए फैसला किया है: 10 am-6pm इस मामले में मैं सभी तिथियों> 2 और हर दिन में यह एक समय 10am से समाप्त होता है और शाम 6 बजे शुरू करने के लिए है का एक सेट का निर्माण करेगा, नीचे एक उदाहरण है निम्नलिखित की तरह एक शब्दकोश में इन तारीखों:
dictD = {'dates_between_2_9':[[2016-07-03 10:00, 2016-07-03 16:00], [2016-07-04 10:00, 2016-07-04 16:00], ....., [2016-07-08 10:00, 2016-07-08 16:00]]}
मैं dict इस्तेमाल किया क्योंकि मैं ऐसी अनेक शर्तों मैं उनके लिए तारीखों के सेट बनाने की जरूरत है, तो वहाँ उदाहरण dates_between_2_5 से एक और प्रमुख अन्य के लिए किया जाएगा।
दूसरी ओर परमैं एक शर्त के आधार पर एक और अनुरोध भी केवल की तरह प्रारंभ समय के साथ तारीखों बनाने के लिए मिलता है निम्नलिखित:
listL = [2016-07-02 14:00,2016-07-03 14:00,2016-07-04 14:00 ... 2016-07-11 14:00]
:
greater > 1 less than 12
start time : 2pm
date1: 2016-07-02 14:00
date2: 2016-07-03 14:00
date3: 2016-07-04 14:00
.
.
.
date10: 2016-07-11 14:00
मैं एक सूची में इन तारीखों को स्टोर करने का निर्णय लिया
इसके बाद मैं लिस्टल से प्रत्येक दिनांक की तुलना डिक्टडी से प्रत्येक कुंजी के लिए तारीखों की सूची से करता हूं और यदि लिस्टल की एक तिथि शुरुआत में है, तो समय बंद करें, तो मुझे इसे सूची से हटा देना चाहिए और केवल सूची सूची से तारीखों को वापस करना चाहिए डिक्टडी की तिथियों के साथ ओवरलैप नहीं है, मेरा तर्क अनुवर्ती की तरह है आईएनजी:
for L from ListL:
for every key in DictD:
for item from DictD[key]:
if DictD[key][0] < L < DictD[key][1] # check if item from list overlap with start,stop time from dictionary.
ListL.remove(L) # I know I can't remove items from list while iterating so I will probably create a set and store all overlapped items and then subtract this set to set(ListL) to get the difference.
return ListL
मेरा प्रश्न है, क्या मैं अपनी आवश्यकताओं को संभालने के लिए एक कुशल डेटा संरचनाओं का उपयोग कर रहा हूं? मुझे लगता है कि मेरा तर्क इतना कुशल नहीं है इसलिए मैं सोच रहा था कि इस समस्या के करीब आने का बेहतर तरीका है या नहीं?
किसी भी मदद की सराहना की जाएगी। अग्रिम धन्यवाद!
एक छोटी ऑफ-विषय सलाह, पूर्णांक स्थिरांक पर अग्रणी शून्य न डालें। पायथन 2 में आपको एक ऐसा मूल्य मिल सकता है जिसका आप इरादा नहीं रखते थे, और पायथन 3 में यह एक त्रुटि उत्पन्न करता है ('00' को छोड़कर)। –