Python Language
समूह द्वारा()
खोज…
परिचय
पायथन में, 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']]}