2012-11-16 21 views
9
order = ['w','x','a','z'] 
[(object,'a'),(object,'x'),(object,'z'),(object,'a'),(object,'w')] 

'ऑर्डर' द्वारा प्रदान की गई प्रमुख सूची के अनुसार मैं दूसरे तत्व द्वारा टुपल्स की उपरोक्त सूची को कैसे क्रमबद्ध करूं? 11/18/13 परमनमानी कुंजी द्वारा tuples की सॉर्टिंग सूची

अद्यतन: Python: using a dict to speed sorting of a list of tuples:

मैं इस सवाल का जहां कुंजी अद्वितीय होना निश्चित है की भिन्नता, इस सवाल में विस्तृत करने के लिए एक बेहतर दृष्टिकोण मिल गया।

मेरा उपरोक्त प्रश्न काफी लागू नहीं होता है क्योंकि ट्यूपल्स की दी गई सूची में 'a' के मुख्य मान के साथ दो tuples हैं।

+0

क्या आप इस उदाहरण का उदाहरण दे सकते हैं कि आप परिणाम की अपेक्षा करने की क्या उम्मीद कर रहे हैं? – enginefree

उत्तर

11

आप sorted उपयोग करें, और key के रूप में एक समारोह है कि order सूची में प्रत्येक टपल के दूसरे मूल्य के सूचकांक रिटर्न दे सकते हैं।

>>> sorted(mylist,key=lambda x: order.index(x[1])) 

[('object', 'w'), ('object', 'x'), ('object', 'a'), ('object', 'a'), ('object', 'z')] 

खबरदार, इस विफल रहता है जब भी tuples से एक मूल्य order सूची के भीतर मौजूद नहीं है।

संपादित करें:

आदेश में एक छोटे से अधिक सुरक्षित होने के लिए, आप इस्तेमाल कर सकते हैं:

sorted(mylist,key=lambda x: x[1] in order and order.index(x[1]) or len(order)+1) 

यह एक महत्वपूर्ण यह है कि के अंत में order सूची में नहीं है के साथ सभी प्रविष्टियों डाल देंगे परिणामस्वरूप सूची।

+0

वह अंतिम संपादन बहुत उपयोगी था क्योंकि अब मैं इस तरह से एक बहुत ही सुरुचिपूर्ण तरीके से असफल हो सकता हूं। धन्यवाद! – Cole

संबंधित मुद्दे