पायथन के साथ डेटा विश्लेषण करते समय हम ऐसी स्थितियों का सामना करते हैं जब हमें दो डिक्शनरीज को इस तरह मर्ज करना होता है कि उन तत्वों के मान जोड़ दिए जाएं जिनकी कुंजियों के मान समान हैं। इस लेख में हम ऐसी दो डिक्शनरीज को जोड़ते हुए देखेंगे।
फॉर लूप और | ऑपरेटर के साथ
इस दृष्टिकोण में हम दोनों डिक्शनरीज में कुंजी के मान की उपस्थिति की जांच करने के लिए एक फॉर लूप डिज़ाइन करते हैं और फिर उन्हें जोड़ते हैं। अंत में हम डिक्शनरीज के लिए उपलब्ध | ऑपरेटर का उपयोग करके दोनों डिक्शनरीज को मर्ज करते हैं।
उदाहरण
dictA = {'Mon': 23, 'Tue': 11, 'Sun': 6}
dictB = {'Wed': 10, 'Mon': 12, 'Sun': 4}
# सामान्य कुंजी के साथ जोड़ें
for key in dictB:
if key in dictA:
dictB[key] = dictB[key] + dictA[key]
else:
pass
res = dictA | dictB
print(res)
उपरोक्त कोड चलाने से हमें निम्न परिणाम मिलता है:
आउटपुट
{'Mon': 35, 'Tue': 11, 'Sun': 10, 'Wed': 10}
Counter का उपयोग करके
collections मॉड्यूल से Counter फ़ंक्शन को सीधे दोनों डिक्शनरीज को मर्ज करने के लिए लागू किया जा सकता है जो कुंजियों को संरक्षित करता है। और बदले में मेल खाने वाली कुंजियों पर मानों को जोड़ता है।
उदाहरण
from collections import Counter
dictA = {'Mon': 23, 'Tue': 11, 'Sun': 6}
dictB = {'Wed': 10, 'Mon': 12, 'Sun': 4}
res = Counter(dictA) + Counter(dictB)
print(res)
उपरोक्त कोड चलाने से हमें निम्न परिणाम मिलता है:
आउटपुट
Counter({'Mon': 35, 'Tue': 11, 'Sun': 10, 'Wed': 10})
तुलना:
| विशेषता | फॉर लूप + | | Counter |
|---|---|---|
| सिंटैक्स | अधिक वर्बोज | संक्षिप्त, एक लाइन |
| रिटर्न प्रकार | dict | Counter (dict सबक्लास) |
| नकारात्मक मान | संभालता है | नकारात्मक मान हटा देता है |
| प्रदर्शन | O(n) | O(n) - C में अनुकूलित |
नोट: Counter जोड़ नकारात्मक या शून्य परिणामों वाले आइटम्स को हटा देता है। यदि आपको सभी कुंजियां चाहिए, तो फॉर लूप विधि का उपयोग करें।