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

दी गई सूची से पायथन समूह विपर्यय

इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सभी एनाग्राम को एक सूची में समूहित करता है। सबसे पहले, आइए देखें कि विपर्ययण क्या हैं? ।

कोई भी दो तार जिनका एक ही वर्ण भिन्न क्रम में होता है, विपर्ययण कहलाते हैं।

समाधान में गोता लगाने से पहले, आइए एक उदाहरण देखें।

इनपुट

['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac']

आउटपुट

[['cat', 'tac'], ['dog', 'god'], ['fried', 'fired'], ['pat', 'tap']]

हम समस्या को दो टुकड़ों में तोड़ देंगे। सबसे पहले, हम एक फ़ंक्शन लिखेंगे जो जांचता है कि दो तार विपर्यय हैं या नहीं। विपर्यय की जाँच करने के लिए कोड लिखने के लिए नीचे दिए गए चरणों का पालन करें।

  • स्ट्रिंग को इनिशियलाइज़ करें।
  • दोनों तारों को क्रमबद्ध करें।
  • यदि दोनों क्रमबद्ध स्ट्रिंग समान हैं तो सत्य return लौटाएं और गलत

उदाहरण

# simple lambda function to check whether two strings are anagrams or not
are_anagrams = lambda x, y: str(sorted(x.lower())) == str(sorted(y.lower()))
# calling the function
print(are_anagrams('cat', 'tac'))
print(are_anagrams('cat', 'Tac'))
print(are_anagrams('cat', 'dog'))

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

True
True
False

अब, हम जानते हैं कि दो तारों की जाँच कैसे की जाती है कि वे विपर्यय हैं या नहीं। लेकिन, यह हमारी समस्या का समाधान करने के लिए पर्याप्त नहीं है। हमें सूची से सभी विपर्यय को उप-सूचियों के रूप में समूहित (संग्रहित) करने की आवश्यकता है।

हम समस्या का समाधान कैसे कर सकते हैं?

तत्वों को समूहबद्ध करने के लिए शब्दकोशों का उपयोग करना सबसे अच्छा अभ्यास है। संबंधित विपर्यय के लिए हमारे पास एक ही कुंजी होगी। यदि आप पायथन के लिए नए हैं तो यह थोड़ा भ्रमित करने वाला है। आइए देखें कि हम जो चाहते हैं उसे हासिल करने के लिए कदम उठाएं।

  • स्ट्रिंग की सूची प्रारंभ करें।
  • खाली शब्दकोश प्रारंभ करें।
  • सूची में पुनरावृति करें।
    • स्ट्रिंग को क्रमबद्ध करें।
    • जांचें कि यह शब्दकोश में मौजूद है या नहीं।

      • यदि यह शब्दकोश में मौजूद है, तो स्ट्रिंग को उसकी सूची में जोड़ें।
    • अन्यथा एनाग्राम को स्टोर करने के लिए मौजूदा स्ट्रिंग सहित सूची के साथ कुंजी को इनिशियलाइज़ करें।
  • शब्दकोश के सभी मानों को एक सूची में प्रिंट करें।

उदाहरण

# initialzing a list of strings
anagrams = ['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac']
# initializing an empty dict
grouped_anagrams = {}
# iterating over the list to group all anagrams
for string in anagrams:
   # sorting the string
   sorted_string = str(sorted(string))
   # checking the string in dict
   if sorted_string in grouped_anagrams:
      # adding the string to the group anagrams
      grouped_anagrams[sorted_string].append(string)
      else:
         # initializing a list with current string
         grouped_anagrams[sorted_string] = [string]
# printing the values of the dict (anagram groups)
print(list(grouped_anagrams.values()))

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

[['dog', 'god'], ['pat', 'tap'], ['cat', 'tac'], ['fired', 'fried']]

निष्कर्ष

आप विभिन्न तरीकों का उपयोग करके भी समस्या का समाधान कर सकते हैं। defaultdict . नामक एक डेटा संरचना है जो आपको शब्दकोश में कुंजी की जाँच से बचने में मदद करता है। आप इसे एक्सप्लोर कर सकते हैं और तदनुसार कोड बदल सकते हैं।

यदि आपको ट्यूटोरियल में कोई संदेह है, तो टिप्पणी अनुभाग में उनका उल्लेख करें।


  1. पायथन में सूचियों की दी गई सूची से सकारात्मक तत्व प्राप्त करें

    सूचियों को नेस्टेड किया जा सकता है, इसका मतलब है कि सूची के तत्व स्वयं सूचियां हैं। इस लेख में हम देखेंगे कि सूचियों की सूची से केवल सकारात्मक संख्याओं का पता कैसे लगाया जाए। परिणाम में एक नई सूची में सकारात्मक संख्याओं वाली नेस्टेड सूचियां होंगी। इन फॉर इन यहां हम केवल लूप का उपयोग करके सूची में त

  1. दिए गए पायथन सूची से बिग्राम का गठन

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

  1. पायथन में समूह विपर्यय

    मान लीजिए, हमारे पास स्ट्रिंग्स का एक सेट है। हमें एनाग्राम को एक साथ ग्रुप करना है। तो अगर [खाओ, चाय, तन, खाया, नट, बल्ले], तो समूह हैं [[खाया, खाओ, चाय], [ नेट, टैन], [बैट]] इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - res को मानचित्र के रूप में परिभाषित करें स्ट्रिंग सरणी में i के लिए x :=x