अवरोही क्रम में पायथन सूची क्रमबद्ध


334

मैं इस सूची को अवरोही क्रम में कैसे सॉर्ट कर सकता हूं?

timestamp = [
    "2010-04-20 10:07:30",
    "2010-04-20 10:07:38",
    "2010-04-20 10:07:52",
    "2010-04-20 10:08:22",
    "2010-04-20 10:08:22",
    "2010-04-20 10:09:46",
    "2010-04-20 10:10:37",
    "2010-04-20 10:10:58",
    "2010-04-20 10:11:50",
    "2010-04-20 10:12:13",
    "2010-04-20 10:12:13",
    "2010-04-20 10:25:38"
]

जवाबों:


387

एक पंक्ति में, एक का उपयोग कर lambda:

timestamp.sort(key=lambda x: time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6], reverse=True)

एक समारोह में पास करना list.sort:

def foo(x):
    return time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6]

timestamp.sort(key=foo, reverse=True)

13
समय टपल का रूपांतरण अनावश्यक है।
मार्सेलो कैंटोस

2
@ मार्सेलो: केवल संयोग से।
इग्नासियो वाज़केज़-अब्राम्स

16
@ इग्नासियोवेज़ज़-अब्राम्स संयोग से नहीं। आईएसओ 8601 को स्पष्ट रूप से डिज़ाइन किया गया है ताकि वर्णानुक्रम क्रम कालानुक्रमिक क्रम से मेल खाता हो।
jwg

@jwg भावना के साथ सहमत (यह स्पष्ट रूप से डिजाइन द्वारा है, संयोग नहीं), लेकिन दिए गए प्रारूप आईएसओ 8601 के अनुरूप नहीं हैं।
मार्सेलो कैंटोस

2
@jwg दिनांक और समय घटकों के बीच एक स्थान है।
मार्सेलो कैंटोस

381

यह आपको सरणी का एक सॉर्ट किया गया संस्करण देगा।

sorted(timestamp, reverse=True)

यदि आप इन-प्लेस को सॉर्ट करना चाहते हैं:

timestamp.sort(reverse=True)

2
reverse2.4 में जोड़ा गया था। लेकिन ध्यान दें कि sort()स्थिर है, इसलिए दिए गए कोड के दो बिट्स समान परिणाम नहीं देंगे।
इग्नासियो वाज़केज़-अब्राम्स

3
@ राजीव - मत भूलिए कि आप तारीखों को केवल उसी तरह से लिख सकते हैं, जब वे इस तरह से लिखे गए हों (YYYY-MM-DD HH: MM: SS), जहां वर्णानुक्रम वर्णानुक्रम की तरह ही हो। Y DD.MM.YYYY ’एक अच्छा उदाहरण होगा, जहाँ आपको बस जरूरत से ज्यादा की जरूरत होगी sort(reverse=True)
यूमिरो

प्रिंट ("सॉर्ट से पहले सूची"); (MyList) प्रिंट; myList.sort (रिवर्स = ट्रू); प्रिंट ("सॉर्टलिस्ट:" + str (myList));
इरूम

@ यह एक उत्तर है, एक टिप्पणी नहीं है, और एक उत्तर के रूप में, यह बेमानी है।
मार्सेलो कैंटोस

56

आप बस यह कर सकते हैं:

timestamp.sort(reverse=True)

10

चूंकि आपकी सूची पहले से ही आरोही क्रम में है, इसलिए हम सूची को उल्टा कर सकते हैं।

>>> timestamp.reverse()
>>> timestamp
['2010-04-20 10:25:38', 
'2010-04-20 10:12:13', 
'2010-04-20 10:12:13', 
'2010-04-20 10:11:50', 
'2010-04-20 10:10:58', 
'2010-04-20 10:10:37', 
'2010-04-20 10:09:46', 
'2010-04-20 10:08:22',
'2010-04-20 10:08:22', 
'2010-04-20 10:07:52', 
'2010-04-20 10:07:38', 
'2010-04-20 10:07:30']

9

आप सरल प्रकार:

timestamp.sort()
timestamp=timestamp[::-1]

यह एक अजीब जवाब है क्योंकि आप जगह में छँटाई करते हैं लेकिन फिर जगह-जगह उलट-पलट करते हैं। यदि मूल सूची में कोई अन्य चर है, तो उसके बाद के मूल्य में उनके मूल क्रम में तत्व नहीं होंगे, न ही अवरोही क्रम में; उपनाम आरोही क्रम में क्रमबद्ध सूची में इंगित करेगा । बल्कि आश्चर्य की बात है, और सूक्ष्म कीड़े का एक स्रोत हो सकता है।
काया ३

0

यहाँ एक और तरीका है


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