2010-07-15 11 views
5

मेरे पास फ़ाइल से पढ़ने वाली लाइनों की एक सूची है। मुझे समय टिकट द्वारा सूची को सॉर्ट करने की आवश्यकता है। मैंने नियमित अभिव्यक्तियों का उपयोग करके टाइम स्टैंप को पार्स किया है और उन्हें एक अलग सूची में रखा है। दो सूचियों के सूचकांक मिलेंगे। एक बार जब मैं टाइम टिकटें की सूची सॉर्ट करता हूं, तो मुझे सूचकांक का ऑर्डर मिल सकता है।सूचकांक के दिए गए क्रम द्वारा क्रमबद्ध करें

क्या सूचकांक के समान क्रम को लाइनों की मूल सूची में लागू करने का कोई तरीका है? परिणाम मूल लाइनों की क्रमबद्ध सूची होना चाहिए।

उदाहरण:

listofLines = ['log opened 16-Feb-2010 06:37:56 UTC', 
       '06:37:58 Custom parameters are in use', 
       'log closed 16-Feb-2010 05:26:47 UTC'] 
listofTimes = ['06:37:56', '06:37:58', '05:26:47'] 
sortedIndex = [2,0,1] 

उत्तर

4

मुझे लगता है कि आप

[line for (time,line) in sorted(zip(listofTimes, listofLines))] 

कर सकता है लेकिन अगर आप है (या लिख ​​सकता है) एक समारोह स्वचालित रूप से लाइन से समय निकालने के लिए ,

def extract_time(line): 
    ... 
    return time 

आप भी

listofLines.sort(key=extract_time) 

कर सकता है या आप मूल सूची बनाए रखने के लिए,

sorted(listofLines, key=extract_time) 
0

आप कहीं और है, क्योंकि यह करने के लिए आप, कहते हैं, hald संदर्भ मूल सूची को सॉर्ट करना चाहते हैं चाहते हैं , आप इसे क्रमबद्ध सूची में असाइन कर सकते हैं:

my_list[:] = [my_list[i] for i in sorted_indexes] # [:] is key! 
संबंधित मुद्दे