खोज…


परिचय

पायथन में, itertools.groupby() विधि डेवलपर्स को निर्दिष्ट गुणों के आधार पर पुनरावृत्त वर्ग के मानों को एक और पुनरावृत्त सेट के मूल्यों में विभाजित करने की अनुमति देती है।

वाक्य - विन्यास

  • itertools.groupby (चलने योग्य, कुंजी = कोई नहीं या कोई फ़ंक्शन)

पैरामीटर

पैरामीटर विवरण
iterable कोई अजगर iterable
चाभी समारोह (मानदंड) जिस पर चलने योग्य समूह के लिए

टिप्पणियों

ग्रुपबी () मुश्किल है लेकिन इसका उपयोग करते समय ध्यान में रखना एक सामान्य नियम है:

हमेशा उन वस्तुओं को क्रमबद्ध करें जिन्हें आप उसी कुंजी के साथ समूहित करना चाहते हैं जिन्हें आप समूहीकरण के लिए उपयोग करना चाहते हैं

यह अनुशंसा की जाती है कि पाठक यहां प्रलेखन पर एक नज़र डालें और देखें कि कक्षा परिभाषा का उपयोग करके इसे कैसे समझाया गया है।

उदाहरण 1

कहो तुम्हारे पास तार है

s = 'AAAABBBCCDAABBB'

और आप इसे विभाजित करना चाहेंगे, इसलिए सभी 'ए' एक सूची में हैं और इसलिए सभी 'बी' और 'सी', आदि के साथ आप ऐसा कुछ कर सकते हैं।

s = 'AAAABBBCCDAABBB'
s_dict = {}
for i in s:
    if i not in s_dict.keys():
        s_dict[i] = [i]
    else:
        s_dict[i].append(i)
s_dict

का परिणाम

{'A': ['A', 'A', 'A', 'A', 'A', 'A'],
 'B': ['B', 'B', 'B', 'B', 'B', 'B'],
 'C': ['C', 'C'],
 'D': ['D']}

लेकिन बड़े डेटा सेट के लिए आप इन वस्तुओं को स्मृति में बना रहे होंगे। यह वह जगह है जहाँ समूह () आता है

हम निम्न कार्य करके अधिक कुशल तरीके से समान परिणाम प्राप्त कर सकते हैं

# note that we get a {key : value} pair for iterating over the items just like in python dictionary
from itertools import groupby
s = 'AAAABBBCCDAABBB'
c = groupby(s)

dic = {} 
for k, v in c:
    dic[k] = list(v)
dic

का परिणाम

{'A': ['A', 'A'], 'B': ['B', 'B', 'B'], 'C': ['C', 'C'], 'D': ['D']}

ध्यान दें कि जब हमने समूह का उपयोग किया था तो 'ए' की संख्या मूल स्ट्रिंग में 'ए' की वास्तविक संख्या से कम है। हम नीचे दिखाए गए अनुसार ग को पास करने से पहले आइटम को सॉर्ट करके जानकारी के उस नुकसान से बच सकते हैं

c = groupby(sorted(s))

dic = {} 
for k, v in c:
    dic[k] = list(v)
dic

का परिणाम

{'A': ['A', 'A', 'A', 'A', 'A', 'A'], 'B': ['B', 'B', 'B', 'B', 'B', 'B'], 'C': ['C', 'C'], 'D': ['D']}

अब हमारे पास हमारे सभी 'ए' हैं।

उदाहरण 2

यह उदाहरण दिखाता है कि यदि हम कोई निर्दिष्ट नहीं करते हैं तो डिफ़ॉल्ट कुंजी कैसे चुनी जाती है

c = groupby(['goat', 'dog', 'cow', 1, 1, 2, 3, 11, 10, ('persons', 'man', 'woman')])
dic = {}
for k, v in c:
    dic[k] = list(v)
dic

का परिणाम

{1: [1, 1],
 2: [2],
 3: [3],
 ('persons', 'man', 'woman'): [('persons', 'man', 'woman')],
 'cow': ['cow'],
 'dog': ['dog'],
 10: [10],
 11: [11],
 'goat': ['goat']}

यहाँ ध्यान दें कि इस सूची में एक कुंजी के रूप में टुपल पूरे मायने रखता है

उदाहरण 3

इस उदाहरण में देखें कि मुलतो और ऊंट हमारे परिणाम में दिखाई नहीं देते हैं। निर्दिष्ट कुंजी के साथ केवल अंतिम तत्व दिखाता है। ग के लिए अंतिम परिणाम वास्तव में दो पिछले परिणामों को मिटा देता है। लेकिन नया संस्करण देखें जहां मेरे पास डेटा एक ही कुंजी पर पहले सॉर्ट किया गया है।

list_things = ['goat', 'dog', 'donkey', 'mulato', 'cow', 'cat', ('persons', 'man', 'woman'), \
               'wombat', 'mongoose', 'malloo', 'camel']
c = groupby(list_things, key=lambda x: x[0])
dic = {}
for k, v in c:
    dic[k] = list(v)
dic

का परिणाम

{'c': ['camel'],
 'd': ['dog', 'donkey'],
 'g': ['goat'],
 'm': ['mongoose', 'malloo'],
 'persons': [('persons', 'man', 'woman')],
 'w': ['wombat']}

सॉर्ट किया गया संस्करण

list_things = ['goat', 'dog', 'donkey', 'mulato', 'cow', 'cat', ('persons', 'man', 'woman'), \
               'wombat', 'mongoose', 'malloo', 'camel']
sorted_list = sorted(list_things, key = lambda x: x[0])
print(sorted_list)
print()
c = groupby(sorted_list, key=lambda x: x[0])
dic = {}
for k, v in c:
    dic[k] = list(v)
dic

का परिणाम

['cow', 'cat', 'camel', 'dog', 'donkey', 'goat', 'mulato', 'mongoose', 'malloo', ('persons', 'man', 'woman'), 'wombat']

{'c': ['cow', 'cat', 'camel'],
 'd': ['dog', 'donkey'],
 'g': ['goat'],
 'm': ['mulato', 'mongoose', 'malloo'],
 'persons': [('persons', 'man', 'woman')],
 'w': ['wombat']}

उदाहरण 4

इस उदाहरण में हम देखते हैं कि जब हम विभिन्न प्रकार के चलने योग्य उपयोग करते हैं तो क्या होता है।

things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "harley"), \
          ("vehicle", "speed boat"), ("vehicle", "school bus")]
dic = {}
f = lambda x: x[0]
for key, group in groupby(sorted(things, key=f), f):
    dic[key] = list(group)
dic

का परिणाम

{'animal': [('animal', 'bear'), ('animal', 'duck')],
 'plant': [('plant', 'cactus')],
 'vehicle': [('vehicle', 'harley'),
  ('vehicle', 'speed boat'),
  ('vehicle', 'school bus')]}

नीचे दिया गया यह उदाहरण मूल रूप से इसके ऊपर के समान है। अंतर केवल इतना है कि मैंने सभी टुपल्स को सूचियों में बदल दिया है।

things = [["animal", "bear"], ["animal", "duck"], ["vehicle", "harley"], ["plant", "cactus"], \
          ["vehicle", "speed boat"], ["vehicle", "school bus"]]
dic = {}
f = lambda x: x[0]
for key, group in groupby(sorted(things, key=f), f):
    dic[key] = list(group)
dic

परिणाम

{'animal': [['animal', 'bear'], ['animal', 'duck']],
 'plant': [['plant', 'cactus']],
 'vehicle': [['vehicle', 'harley'],
  ['vehicle', 'speed boat'],
  ['vehicle', 'school bus']]}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow