मुझे इस तरह के संचालन के लिए एक कठिन तरीके से आने में मुश्किल हो रही है। मेरे पास डेटाबेस पढ़ने से डेटा वापस आ रहा है। मैं accoutingdate पर सॉर्ट करना चाहता हूँ। हालांकि, accoutingdate कभी कभी शून्य हो सकता है। मैं वर्तमान में निम्नलिखित कर रहा हूँ:पायथन में, दिनांक फ़ील्ड पर सॉर्टिंग, फ़ील्ड कभी-कभी शून्य हो सकता है
results = sorted(results, key=operator.itemgetter('accountingdate'), reverse=True)
लेकिन, के साथ इस बम: कुछ accoutingdates अशक्त होने के कारण "लेखन त्रुटि NoneType को datetime.date तुलना नहीं कर सकते"।
इसे संभालने के लिए "सबसे सही" या "सबसे पायथनिक" तरीका क्या है? सभी datetime वस्तुओं की तुलना में छोटे होने के रूप में
def nonecmp(a, b):
if a is None and b is None:
return 0
if a is None:
return -1
if b is None:
return 1
return cmp(a, b)
results = sorted(results, cmp=nonecmp, ...)
यह व्यवहार करता है None
:
आपके प्रकार में कोई भी नहीं गिरता है? प्रथम? पिछले? बीच में कहीं? किसी दिनांक की तुलना में 'कोई नहीं' का अर्थ क्या होता है? 7 दिसंबर 2001 से पहले या उसके बाद 'कोई नहीं' है? –
मेरी वरीयता किसी भी को सभी मान्य तिथियों के पहले "पहले" के रूप में सॉर्ट करना होगा। – Wes
बीटीडब्ल्यू, आप अपनी सूची को जगह में सॉर्ट कर सकते हैं: 'results = sorted (results, ...)' केवल 'result.sort (...) ' –