Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में लॉग फ़ाइलों में डेटा पुनर्क्रमित करना

मान लीजिए हमारे पास लॉग्स की एक सरणी है। उस सरणी में प्रत्येक प्रविष्टि शब्दों का एक स्पेस-डिलिमिटेड स्ट्रिंग है। प्रत्येक लॉग में पहला शब्द एक अल्फ़ान्यूमेरिक पहचानकर्ता है। फिर, विभिन्न प्रकार के स्ट्रिंग्स हैं जैसे -

  1. आईडी के बाद प्रत्येक शब्द केवल लोअरकेस अक्षरों से मिलकर बनेगा;
  2. आईडी के बाद प्रत्येक शब्द केवल अंकों से मिलकर बनेगा।

हम इन दो प्रकार के लॉग्स को क्रमशः लेटर-लॉग्स और डिजिट-लॉग्स कहेंगे। और यह गारंटी है कि प्रत्येक लॉग में अपने आईडी के बाद कम से कम एक शब्द है।

हमें लॉग्स को पुनर्क्रमित करना होगा ताकि सभी लेटर-लॉग्स किसी भी डिजिट-लॉग से पहले रहें। और लेटर-लॉग्स पहचानकर्ता को अनदेखा करके लेक्सिकोग्राफिकली क्रमबद्ध हैं, टाई के मामले में पहचानकर्ता का उपयोग किया जाता है। अंत में, डिजिट-लॉग्स को उनके मूल क्रम में रखा जाना चाहिए। तो हमें लॉग्स का अंतिम क्रम लौटाना होगा।

तो, यदि इनपुट logs = ["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"] जैसा है, तो आउटपुट ["let1 art can","let3 art zero","let2 own kit dig","dig1 9 2 5 2","dig2 4 8"] होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • words := एक नई सूची
  • nums := एक नई सूची
  • logs में प्रत्येक लॉग के लिए, करें
    • s := लॉग के शब्दों की सूची
    • यदि दूसरा शब्द अंक है, तो
      • लॉग को nums के अंत में डालें
    • अन्यथा,
      • s के प्रत्येक तत्व को स्पेस से जोड़कर words सरणी के अंत में डालें
    • words = फिर words सरणी को लेक्सिकोग्राफिकली सॉर्ट करें
  • words := words सरणी के प्रत्येक तत्व को स्पेस से जोड़कर स्ट्रिंग्स की सूची बनाएं
  • दो सूचियों words और nums को मर्ज करें, फिर लौटाएं

बेहतर समझ के लिए निम्न कार्यान्वयन देखें -

उदाहरण

class Solution:
    def reorderLogFiles(self, logs):
        words = []
        nums = []
        for log in logs:
            s = log.split()
            if s[1].isdigit():
                nums.append(log)
            else:
                words.append((s[0], ' '.join(s[1:])))
                words = sorted(words, key=lambda x: (x[1], x[0]))
                words = [' '.join(w) for w in words]
        return words + nums

ob = Solution()
print(ob.reorderLogFiles(["dig1 9 2 5 2", "let1 art can", "dig2 4 8", "let2 own kit dig", "let3 art zero"]))

इनपुट

["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]

आउटपुट

['let1 art can', 'let3 art zero', 'let2 own kit dig', 'dig1 9 2 5 2', 'dig2 4 8']
  1. पायथन में सांख्यिकीय सोच पायथन में सांख्यिकीय सोच

    सांख्यिकी ML और AI सीखने के लिए मौलिक है। चूंकि पायथन इन टेक्नोलॉजीज के लिए पसंद की भाषा है, हम देखेंगे कि सांख्यिकीय विश्लेषण को शामिल करने वाले पायथन प्रोग्राम कैसे लिखें। इस लेख में हम देखेंगे कि विभिन्न पायथन मॉड्यूल्स का उपयोग करके ग्राफ और चार्ट कैसे बनाएं। चार्ट की यह विविधता हमें डेटा का तेज

  1. पायथन में जनगणना डेटा का विश्लेषण पायथन में जनगणना डेटा का विश्लेषण

    जनगणना एक व्यवस्थित तरीके से दी गई जनसंख्या के बारे में जानकारी रिकॉर्ड करने के बारे में है। कैप्चर किए गए डेटा में विभिन्न श्रेणी की जानकारी शामिल होती है जैसे - जनसांख्यिकीय, आर्थिक, आवास विवरण आदि। यह अंततः सरकार को वर्तमान परिदृश्य को समझने और भविष्य के लिए योजना बनाने में मदद करता है। इस लेख मे

  1. - पायथन का उपयोग करके बाइनरी डेटा को फ़ाइल में कैसे लिखें?

    बाइनरी फ़ाइलें वे फ़ाइलें हैं जिनका फॉर्मेट पढ़ने योग्य कैरेक्टर्स से नहीं बना होता। बाइनरी फ़ाइलें इमेज फ़ाइलों जैसे JPEG या GIF, ऑडियो फ़ाइलों जैसे MP3 या बाइनरी डॉक्यूमेंट फॉर्मेट जैसे वर्ड या PDF तक हो सकती हैं। पायथन में, फ़ाइलें डिफ़ॉल्ट रूप से टेक्स्ट मोड में खुलती हैं। फ़ाइलों को बाइनरी मोड