दिलचस्प पोस्ट
जावा में बड़ी संख्या सी से एडी तक पहुँचते समय "एक रेफरल सर्वर से वापस किया गया" अपवाद मैं पर्ल के साथ वेबपृष्ठों के स्क्रीनशॉट कैसे ले सकता हूं? Libv8 को स्थापित करने में त्रुटि: त्रुटि: मणि देशी एक्सटेंशन बनाने में विफल JUnit के साथ यूनिट परीक्षण के लिए IntelliJ IDEA को कॉन्फ़िगर करना Asp.net MVC3 पर कस्टम त्रुटि पृष्ठों जावा इंटरफेस और उद्देश्य-सी प्रोटोकॉल के बीच अंतर? जावा में सूची में सरणी परिवर्तित करना सूचियों / ट्यूपल्स (सूची / ट्यूपल) को सॉर्ट करने के लिए कैसे करें? आंतरिक बनाम बनाम कहाँ मैं वर्तमान उपयोगकर्ता के "एप्लिकेशन डेटा" फ़ोल्डर का पथ कैसे प्राप्त करूं? क्या UITableView में एकल UITableViewCell को ताज़ा करना संभव है? एंड्रॉइड फसल पृष्ठभूमि कैसे कोणीय 2 में url से क्वेरी पैरामीटर प्राप्त करें? क्या jQuery के साथ इनलाइन शैलियों को निकालना संभव है?

पायथन: सूची कई विशेषताओं और मिश्रित आदेश के साथ क्रमबद्ध

मुझे कई विशेषताओं के साथ एक अजगर सूची को सॉर्ट करना होगा मैं उन सभी गुणों के लिए आरोही क्रम में आसानी से कर सकता हूं

L.sort(key=operator.attrgetter(attribute)).... 

लेकिन समस्या यह है, कि मैं आरोही / अवरोही के लिए मिश्रित कॉन्फ़िगरेशन का उपयोग कर रहा हूं … मुझे एसक्यूएल आदेश को "अनुकरण" करना है, जहां आप "नाम एएससी, साल डीईएससी" की तरह कुछ कर सकते हैं। एक कस्टम तुलना समारोह को लागू किए बिना अजगर में आसानी से ऐसा करने का कोई तरीका है?

Solutions Collecting From Web of "पायथन: सूची कई विशेषताओं और मिश्रित आदेश के साथ क्रमबद्ध"

यदि आपकी विशेषताओं संख्यात्मक हैं, तो आपके पास यह है।

 def mixed_order( a ): return ( a.attribute1, -a.attribute2 ) someList.sort( key=mixed_order ) 

यदि आपकी विशेषताओं में स्ट्रिंग्स या अन्य अधिक जटिल ऑब्जेक्ट्स शामिल हैं, तो आपके पास कुछ विकल्प हैं

.sort() विधि स्थिर है: आप एकाधिक पास कर सकते हैं यह शायद सबसे सरल है यह भी उल्लेखनीय तेजी से है

 def key1( a ): return a.attribute1 def key2( a ): return a.attribute2 someList.sort( key=key2, reverse=True ) someList.sort( key=key1 ) 

यदि यह एकमात्र क्रम है, तो आप अपने स्वयं के विशेष-उद्देश्य तुलना ऑपरेटरों को परिभाषित कर सकते हैं। न्यूनतम, आपको __eq__ और __lt__ आवश्यकता है। अन्य चार सरल तर्क द्वारा इन दो से प्राप्त किया जा सकता है।

एक कस्टम फ़ंक्शन आपका कोड अधिक पठनीय प्रस्तुत करेगा। यदि आपके पास कई सॉर्टिंग ऑपरेशन हैं और आप उन फ़ंक्शन को बनाना नहीं चाहते हैं, तो आप लैम्ब्डा का उपयोग कर सकते हैं:

 L.sort(lambda x, y: cmp(x.name, y.name) or -cmp(x.year, y.year)) 

आप नहीं कर सकते हैं, लेकिन तुलना समारोह लेखन आसान है:

 def my_cmp(a, b): return cmp(a.foo, b.foo) or cmp(b.bar, a.bar) L.sort(my_cmp)