मान लीजिए हमारे पास सूचियों की एक सूची है जिसमें प्रत्येक उपसूची में दो तत्व हैं। सूची की कई अन्य उपसूचियों में प्रत्येक उपसूची का एक तत्व सामान्य है। हमें एक अंतिम सूची बनाने की आवश्यकता है जो सामान्य तत्वों द्वारा समूहीकृत उपसूचियों को दिखाएगी।
सेट और मैप के साथ
दी गई सूची में पहला तत्व एक स्ट्रिंग है और दूसरा तत्व एक संख्या है। इसलिए हम एक अस्थायी सूची बनाते हैं जो प्रत्येक उपसूची का दूसरा तत्व रखेगी। फिर हम प्रत्येक उपसूची की तुलना अस्थायी सूची के प्रत्येक तत्व से करते हैं और उन्हें समूहित करने के लिए एक लूप डिज़ाइन करते हैं।
उदाहरण
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3], ["Thu", 1], ['Fri', 2], ['Sat', 3], ['Sun', 1]]
# सेट और मैप के साथ
temp = set(map(lambda i: i[1], listA))
res = [[j[0] for j in listA if j[1] == i] for i in temp]
# परिणाम
print("The list with grouped elements is : \n", res)
आउटपुट
उपरोक्त कोड चलाने पर हमें निम्न परिणाम मिलता है -
The list with grouped elements is : [['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]
ग्रुपबाय और आइटमगेटर के साथ
आइटमगेटर फ़ंक्शन का उपयोग प्रत्येक उपसूची का दूसरा तत्व प्राप्त करने के लिए किया जाता है। फिर आइटमगेटर फ़ंक्शन के परिणाम के आधार पर एक ग्रुप बाय फ़ंक्शन लागू किया जाता है।
उदाहरण
from itertools import groupby
from operator import itemgetter
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3], ["Thu", 1], ['Fri', 2], ['Sat', 3], ['Sun', 1]]
# ग्रुपबाय के साथ
listA.sort(key=itemgetter(1))
groups = groupby(listA, itemgetter(1))
res = [[i[0] for i in val] for (key, val) in groups]
# परिणाम
print("The list with grouped elements is : \n", res)
आउटपुट
उपरोक्त कोड चलाने पर हमें निम्न परिणाम मिलता है -
The list with grouped elements is : [['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]
डिफॉल्टडिक्ट के साथ
हम डिफॉल्टडिक्ट फ़ंक्शन को लागू करते हैं ताकि उपसूची के दूसरे तत्वों को डिक्शनरी की कुंजी के रूप में प्राप्त किया जा सके। फिर परिणामी सूची में हम उपसूची के पहले तत्व से मान जोड़ते हैं।
उदाहरण
import collections
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3], ["Thu", 1], ['Fri', 2], ['Sat', 3], ['Sun', 1]]
# डिफॉल्टडिक्ट के साथ
res = collections.defaultdict(list)
for val in listA:
res[val[1]].append(val[0])
# परिणाम
print("The list with grouped elements is : \n", res)
आउटपुट
उपरोक्त कोड चलाने पर हमें निम्न परिणाम मिलता है -
The list with grouped elements is : defaultdict(, {2: ['Mon', 'Fri'], 3: ['Tue', 'Wed', 'Sat'], 1: ['Thu', 'Sun']})