सूची में सबसे पुरानी / सबसे कम उम्र की वस्तु खोजें


93

मुझे डेटाटाइम ऑब्जेक्ट्स की एक सूची मिली है, और मैं सबसे पुराना या सबसे कम उम्र का व्यक्ति खोजना चाहता हूं। इनमें से कुछ तिथियां भविष्य में हो सकती हैं।

from datetime import datetime

datetime_list = [
    datetime(2009, 10, 12, 10, 10),
    datetime(2010, 10, 12, 10, 10),
    datetime(2010, 10, 12, 10, 10),
    datetime(2011, 10, 12, 10, 10), #future
    datetime(2012, 10, 12, 10, 10), #future
]

ऐसा करने का सबसे इष्टतम तरीका क्या है? मैं उनमें से हर एक के लिए datetime.now () की तुलना करने के बारे में सोच रहा था।


6
कैसे maxऔर min?
जोश

9
स्टैकओवरफ़्लो पर कोई समान प्रश्न नहीं था, मैंने उत्तर के लिए खोज की, इसलिए मुझे यकीन है कि यह दूसरों के लिए उपयोगी होगा।
panosl

जवाबों:


129

सबसे पुराना:

oldest = min(datetimes)

अब से पहले सबसे कम:

now = datetime.datetime.now(pytz.utc)
youngest = max(dt for dt in datetimes if dt < now)

आपका मतलब सबसे पुराना है? ( Oldest before now)
बुलगिमीर

पायथन 3 में, मुझे लगता है कि यह त्रुटिपूर्ण है। अगर मैं यह सरणी ["April2020", "March2020"] देता हूं, तो min मुझे "April2020" देगा, जैसे कि min सबसे हाल ही में देंगे। हालांकि, अगर मैं इसे ["अप्रैल 2020", "जनवरी 2021", "मार्च 2020"] देता हूं, तो मंत्री मुझे "अप्रैल 2020" देंगे। मुझे पूरा यकीन है कि न्यूनतम वर्णमाला न्यूनतम होगी जो जरूरी नहीं कि सबसे हाल की तारीख हो।
स्कॉट्टीब्लाड्स

1
@ScottyBlades ऐसा इसलिए है क्योंकि आपके उदाहरण में आपके मूल्य तार हैं (जो किसी तिथि का प्रतिनिधित्व करने के लिए होते हैं, लेकिन वास्तव में dateमूल्य नहीं हैं), इसलिए उनकी तुलना केवल वर्णानुक्रम से की जा सकती है। यदि आपके पास एक सरणी dateया datetimeमान है, तो उनकी तुलना सही ढंग से की जाएगी।
जॉर्डन

30

तारीखों की सूची दी dates:

अधिकतम तिथि है max(dates)

न्यूनतम तिथि है min(dates)



6

क्या आपने यह कोशिश की है:

>>> from datetime import datetime as DT
>>> l =[]
>>> l.append(DT(1988,12,12))
>>> l.append(DT(1979,12,12))
>>> l.append(DT(1979,12,11))
>>> l.append(DT(2011,12,11))
>>> l.append(DT(2022,12,11))
>>> min(l)
datetime.datetime(1979, 12, 11, 0, 0)
>>> max(l)
datetime.datetime(2022, 12, 11, 0, 0)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.