- 1 १. परिचय
- 2 २. शब्दकोश मर्ज गर्ने आधारभूत विधिहरू
- 3 ३. विशेष केसहरूमा शब्दकोश मर्ज गर्नुहोस्
- 4 4. शब्दकोश मर्ज गर्दा ध्यान दिनुपर्ने कुराहरू
- 5 5. विधिहरूको तुलना र चयन मार्गदर्शन
- 6 6. बारम्बार सोधिने प्रश्नहरू (FAQ)
- 6.1 6.1 शब्दकोश मर्ज गर्दा त्रुटि किन आउँछ?
- 6.2 6.2 Python 3.9 भन्दा पहिलेको संस्करणमा | अपरेटर प्रयोग गर्न चाहनुहुन्छ भने के विकल्पहरू छन्?
- 6.3 6.3 नेस्टेड डिक्शनरीहरूलाई कसरी मर्ज गर्ने?
- 6.4 6.4 मर्ज अपरेटर प्रयोग गरेर एकैचोटि धेरै डिक्शनरीहरू मर्ज गर्न सक्नुहुन्छ?
- 6.5 6.5 ठूलो मात्रामा डेटा संग काम गर्दा डिक्शनरीहरू मर्ज गर्ने उत्तम तरिका के हो?
- 7 7. सारांश
१. परिचय
Python को dict डेटा संरचना किज‑भ्यालु जोडीको रूपमा डेटा व्यवस्थापन गर्न सुविधाजनक हुन्छ। धेरै अवस्थामा तपाईंलाई शब्दकोशहरू संयोजन गर्न आवश्यक पर्छ—उदाहरणका लागि, धेरै कन्फिगरेसन फाइलहरू मर्ज गर्दा वा विभिन्न डाटासेटहरू एकत्रित गर्दा।
यो लेखले Python मा शब्दकोशहरू मर्ज गर्ने विभिन्न तरिकाहरूलाई विस्तृत रूपमा व्याख्या गर्दछ। शुरुआतीदेखि मध्यवर्ती प्रयोगकर्तासम्म लक्षित गर्दै, यसले आधारभूत प्रविधिहरू, Python 3.9 मा प्रस्तुत गरिएको विधि, र विशेष केसहरूमा उपयोगी हुने उपायहरूलाई समेट्छ। कोड उदाहरणहरूसहित, हामी प्रत्येक विधिको विशेषताहरू र कहिले प्रयोग गर्ने भन्ने कुरा अन्वेषण गर्नेछौं।
२. शब्दकोश मर्ज गर्ने आधारभूत विधिहरू
Python ले शब्दकोश मर्ज गर्ने विभिन्न तरिकाहरू प्रदान गर्दछ। पहिलोमा, हामी आधारभूत विधिहरूलाई व्याख्या गर्नेछौं।
२.१ update() मेथड प्रयोग गरेर
विशेषताहरू
update() मेथड एक शब्दकोशलाई अर्कोमा मर्ज गर्ने सबैभन्दा आधारभूत तरिका हो। यो अपरेसन विनाशकारी (original शब्दकोशलाई परिवर्तन गर्छ) हुन्छ, त्यसैले यदि तपाईंले मूल शब्दकोशको सामग्री सुरक्षित राख्न चाहनुहुन्छ भने सावधान रहनुहोस्।
कोड उदाहरण
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1) # {'a': 1, 'b': 3, 'c': 4}
व्याख्या
उपरोक्त कोडमा, dict2 लाई dict1 मा मर्ज गरिएको छ। यदि कुञ्जीहरू दोहोरिएमा, पछि मर्ज गरिएको शब्दकोश (यस केसमा dict2) को मानहरूले पहिलेको मानलाई ओभरराइट गर्नेछन्।
प्रयोग केसहरू
- मूल शब्दकोशलाई परिवर्तन गर्न स्वीकार्य छ जब।
- सरल र कार्यक्षम उपाय चाहिएको बेला।

२.२ अनप्याकिङ अपरेटर (**) प्रयोग गरेर
विशेषताहरू
Python 3.5 देखि, तपाईं अनप्याकिङ अपरेटर (**) प्रयोग गरेर शब्दकोशहरू मर्ज गर्न सक्नुहुन्छ। यो विधि विनाशकारी छैन (मूल शब्दकोशहरूलाई परिवर्तन गर्दैन) र नयाँ शब्दकोश सिर्जना गर्छ।
कोड उदाहरण
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
combined_dict = {**dict1, **dict2}
print(combined_dict) # {'a': 1, 'b': 3, 'c': 4}
व्याख्या
यो विधिले धेरै शब्दकोशहरूलाई विस्तार गरेर नयाँ शब्दकोश बनाउँछ। यदि कुञ्जीहरू ओभरलैप भएमा, पछि निर्दिष्ट गरिएको शब्दकोश (dict2) को मानहरू प्राथमिकता पाउँछन्।
प्रयोग केसहरू
- मूल शब्दकोशहरूलाई परिवर्तन नगरी नयाँ शब्दकोश चाहिएको बेला।
- पढ्न सजिलो कोड महत्त्वपूर्ण हुँदा।
२.३ मर्ज अपरेटर (|) प्रयोग गरेर
विशेषताहरू
Python 3.9 बाट, | अपरेटर परिचय गराइयो, जसले संक्षिप्त शब्दकोश मर्जलाई सम्भव बनाउँछ। यो विधि पनि विनाशकारी छैन र नयाँ शब्दकोश सिर्जना गर्छ।
कोड उदाहरण
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
combined_dict = dict1 | dict2
print(combined_dict) # {'a': 1, 'b': 3, 'c': 4}
व्याख्या
यो तरिकाले शब्दकोशहरूलाई सहज तरिकाले मर्ज गर्न अनुमति दिन्छ। यसले कोडको पठनीयता सुधार्छ र Python शुरुआतीहरूका लागि बुझ्न सजिलो हुन्छ।
प्रयोग केसहरू
- Python 3.9 वा त्यसपछिको संस्करण प्रयोग गर्दा।
- सरल, बुझ्न सजिलो सिन्ट्याक्स चाहिएको बेला।
३. विशेष केसहरूमा शब्दकोश मर्ज गर्नुहोस्
आधारभूत शब्दकोश मर्ज गर्ने विधिहरूको चर्चा गरेपछि, यस भागले विशेष केसहरू र लागू प्रविधिहरूलाई व्याख्या गर्दछ। यसले विशिष्ट परिस्थितिहरूमा उपयोगी हुने विधिहरू र अधिक उन्नत अपरेसनहरू आवश्यक पर्ने परिदृश्यहरूलाई समेट्छ।
३.१ dict() कन्स्ट्रक्टर प्रयोग गरेर
विशेषताहरू
यो विधिले dict() कन्स्ट्रक्टर प्रयोग गरेर धेरै शब्दकोशहरूलाई मर्ज गर्छ। यदि तपाईंले शब्दकोशमा थप मानहरू सिधै निर्दिष्ट गर्न चाहनुहुन्छ वा अनप्याक गरिएको शब्दकोशहरू समावेश गर्ने नयाँ शब्दकोश बनाउनु छ भने यो उपयोगी हुन्छ।
कोड उदाहरण
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3}
combined_dict = dict(dict1, **dict2)
print(combined_dict) # {'a': 1, 'b': 2, 'c': 3}
व्याख्या
dict1लाई आधारको रूपमा लिइन्छ, रdict2लाई त्यसको माथि अनप्याक गरेर मर्ज गरिन्छ।- ध्यान दिनुहोस् कि यो
**अपरेटर प्रयोग गर्ने भएकाले,dict2का कुञ्जीहरू स्ट्रिङ हुनै पर्छ।
प्रयोग केसहरू
- आधारभूत शब्दकोश मर्जसँगै नयाँ कुञ्जी‑मान जोड्न चाहनुहुन्छ जब।
- Python संस्करण 3.5 वा त्यसपछिको आवश्यक छ।
३.२ collections.ChainMap प्रयोग गरेर
विशेषताहरू
ChainMap वर्ग Python मानक पुस्तकालयको collections मोड्युलमा उपलब्ध छ, जसले अस्थायी रूपमा धेरै शब्दकोशहरूलाई संयोजन गरेर हेरफेर गर्न उपयोगी हुन्छ। यस विधिबाट शब्दकोशहरू मर्ज हुँदैनन् र मूल शब्दकोशहरू जस्तै रहन्छन्।
कोड उदाहरण
from collections import ChainMap
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
combined = ChainMap(dict1, dict2)
print(combined['b']) # 2
print(combined['c']) # 4
व्याख्या
ChainMapले धेरै शब्दकोशहरूलाई एकल भर्चुअल शब्दकोशको रूपमा व्यवहार गर्छ।- कुञ्जी खोजीहरू पहिलो निर्दिष्ट शब्दकोशबाट प्राथमिकतापूर्वक गरिन्छ। यस उदाहरणमा,
'b'को लागिdict1(2) को मान चयन गरिन्छ।
प्रयोग केसहरू
- जब तपाईं शब्दकोशहरूलाई गतिशील रूपमा हेरफेर गर्न चाहनुहुन्छ र वास्तवमा तिनीहरूलाई मर्ज गर्न चाहनुहुन्न।
- जब ठूलो मात्रामा डेटा संग काम गर्दै हुनुहुन्छ र स्मृति दक्षतामा प्राथमिकता दिनुहुन्छ।

4. शब्दकोश मर्ज गर्दा ध्यान दिनुपर्ने कुराहरू
शब्दकोश मर्ज गर्दा केही बुँदाहरूमा ध्यान दिनुपर्छ। यी बुँदाहरूलाई बुझ्दा अनपेक्षित त्रुटि र डेटा असंगतिहरूलाई रोक्न मद्दत मिल्छ।
4.1 दोहोरिएका कुञ्जीहरूको व्यवहार
शब्दकोश मर्ज गर्दा, यदि दोहोरिएका कुञ्जीहरू छन् भने, पछि निर्दिष्ट गरिएको शब्दकोशको मानलाई प्राथमिकता दिइन्छ।
उदाहरण
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
combined = {**dict1, **dict2}
print(combined) # {'a': 1, 'b': 3, 'c': 4}
यस उदाहरणमा, कुञ्जी 'b' को लागि dict2 (3) को मान चयन गरिन्छ। यो व्यवहारलाई बुझ्नु महत्त्वपूर्ण छ।
4.2 प्रदर्शन भिन्नताहरू
शब्दकोश मर्ज गर्न प्रयोग गरिएको विधि अनुसार प्रदर्शन फरक पर्न सक्छ। ठूलो डेटा मात्रा संग काम गर्दा विशेष ध्यान दिनुहोस्।
प्रदर्शन तुलना (समग्र)
update()विधि प्रभावकारी छ तर मूल शब्दकोशलाई परिवर्तन गर्छ, जसले ब्याकअप राख्न आवश्यक परेमा उपयुक्त हुँदैन।- अनप्याक अपरेटर (
**) नन‑डिस्ट्रक्टिभ र सुविधाजनक छ, तर ठूलो डेटा ह्यान्डल गर्दा स्मृति प्रयोग बढ्न सक्छ। ChainMapवास्तवमा शब्दकोशहरूलाई मर्ज गर्दैन, त्यसैले स्मृति‑दक्ष हुन्छ।
5. विधिहरूको तुलना र चयन मार्गदर्शन
शब्दकोश मर्ज गर्ने विभिन्न विधिहरूको तुलना गर्दछ र उपयुक्त दृष्टिकोण चयन गर्न मार्गदर्शन प्रदान गर्दछ।
5.1 विधिहरूको तुलना तालिका
विधि | विनाशकारी/अविनाशकारी | Version | डुप्लिकेट कुञ्जी व्यवहार | प्रदर्शन |
|---|---|---|---|---|
update() | विनाशकारी | All versions | पछि शब्दकोष प्राथमिकता लिन्छ | छिटो |
अनप्याकिङ अपरेटर ( | अविनाशकारी | 3.5 र पछिल्लो | पछि शब्दकोष प्राथमिकता लिन्छ | मध्यम |
Merge operator ( | अविनाशकारी | 3.9 र पछि | बादको शब्दकोशले प्राथमिकता लिन्छ | मध्यम |
ChainMap | अविनाशकारी | All versions | पहिलो शब्दकोशलाई प्राथमिकता दिइन्छ | उच्च मेमोरी दक्षता |
5.2 चयन मार्गदर्शन
- Python 3.9 र त्यसपछिका संस्करणहरूका लागि :
- यसको सरलता र पढ्नयोग्यताका कारण
|अपरेटर सिफारिस गर्छौं। - Python 3.5–3.8 का लागि :
- अनप्याक अपरेटर (
**) प्रयोग गर्न सिफारिस गरिन्छ। - यदि ठूलो डाटासेटसँग काम गर्दै हुनुहुन्छ वा स्मृति दक्षतामा प्राथमिकता दिनुहुन्छ :
ChainMapप्रयोग गर्नु उत्तम हुन्छ।- यदि डिस्ट्रक्टिभ अपरेसनहरू स्वीकार्य छन् :
update()विधि प्रभावकारी छ।

6. बारम्बार सोधिने प्रश्नहरू (FAQ)
यो भागले शब्दकोश मर्ज गर्दा पाइने सामान्य प्रश्नहरू, त्रुटिको कारणहरू, र विशेष केसहरू कसरी ह्यान्डल गर्ने भन्ने बारे व्याख्या गर्दछ।
6.1 शब्दकोश मर्ज गर्दा त्रुटि किन आउँछ?
समस्या उदाहरण
तलको कोड चलाउँदा त्रुटि उत्पन्न हुन्छ।
dict1 = {'a': 1, 'b': 2}
dict2 = {('c',): 3}
combined_dict = {**dict1, **dict2}
कारण
अनप्याक अपरेटर (**) प्रयोग गर्दा कुञ्जीहरू स्ट्रिङ हुनुपर्छ; नत्र त्रुटि आउँछ। माथिको उदाहरणमा, dict2 मा कुञ्जी ('c',) ट्युपल हो, जसले त्रुटि उत्पन्न गराउँछ।
समाधान
यदि कुञ्जीहरू स्ट्रिङ होइनन् भने, update() विधि प्रयोग गर्नुहोस् वा लूप मार्फत म्यानुअली शब्दकोशहरू मर्ज गर्नुहोस्।
dict1 = {'a': 1, 'b': 2}
dict2 = {('c',): 3}
dict1.update(dict2) # Works correctly
print(dict1) # {'a': 1, 'b': 2, ('c',): 3}
6.2 Python 3.9 भन्दा पहिलेको संस्करणमा | अपरेटर प्रयोग गर्न चाहनुहुन्छ भने के विकल्पहरू छन्?
उत्तर
Python 3.9 भन्दा पहिलेको संस्करणमा | अपरेटर प्रयोग गर्न सकिँदैन, तर अनप्याक अपरेटर (**) प्रयोग गरेर समान परिणाम प्राप्त गर्न सकिन्छ।
उदाहरण
तपाईंले Python 3.8 र त्यसभन्दा पहिलेको संस्करणमा तलको कोड प्रयोग गर्न सक्नुहुन्छ।
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
combined_dict = {**dict1, **dict2}
print(combined_dict) # {'a': 1, 'b': 3, 'c': 4}
6.3 नेस्टेड डिक्शनरीहरूलाई कसरी मर्ज गर्ने?
समस्या
नेस्टेड डिक्शनरीहरू मर्ज गर्दा, सामान्य विधिहरूले अपेक्षित रूपमा काम नहुन सक्छ।
dict1 = {'a': {'x': 1}}
dict2 = {'a': {'y': 2}}
combined_dict = {**dict1, **dict2}
print(combined_dict) # {'a': {'y': 2}}
उपरोक्त उदाहरणमा, 'a' कुञ्जी dict2 द्वारा ओभरराइट हुन्छ, र dict1 को मान हराइन्छ।
समाधान
नेस्टेड डिक्शनरीहरू मर्ज गर्न तपाईंलाई पुनरावृत्तिमूलक (recursive) दृष्टिकोण आवश्यक पर्छ।
def merge_dicts(d1, d2):
result = d1.copy()
for key, value in d2.items():
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
result[key] = merge_dicts(result[key], value)
else:
result[key] = value
return result
dict1 = {'a': {'x': 1}}
dict2 = {'a': {'y': 2}}
combined_dict = merge_dicts(dict1, dict2)
print(combined_dict) # {'a': {'x': 1, 'y': 2}}
6.4 मर्ज अपरेटर प्रयोग गरेर एकैचोटि धेरै डिक्शनरीहरू मर्ज गर्न सक्नुहुन्छ?
उत्तर
Python 3.9 र त्यसपछिका संस्करणहरूमा, एकैचोटि धेरै डिक्शनरीहरू मर्ज गर्दा, तपाईंले मर्ज अपरेटरलाई क्रमशः प्रयोग गर्नुपर्छ।
उदाहरण
dict1 = {'a': 1}
dict2 = {'b': 2}
dict3 = {'c': 3}
combined_dict = dict1 | dict2 | dict3
print(combined_dict) # {'a': 1, 'b': 2, 'c': 3}
तपाईं अनप्याकिङ अपरेटर प्रयोग गरेर पनि समान परिणाम प्राप्त गर्न सक्नुहुन्छ।
combined_dict = {**dict1, **dict2, **dict3}
print(combined_dict) # {'a': 1, 'b': 2, 'c': 3}
6.5 ठूलो मात्रामा डेटा संग काम गर्दा डिक्शनरीहरू मर्ज गर्ने उत्तम तरिका के हो?
उत्तर
ठूलो डेटासेटहरूसँग काम गर्दा, ChainMap प्रयोग गर्दा प्रभावकारी रूपमा मर्ज गर्न सकिन्छ। ChainMap वास्तवमा डिक्शनरीहरूलाई संयोजन गर्दैन, जसले स्मृति प्रयोग घटाउन मद्दत गर्छ।
उदाहरण
from collections import ChainMap
dict1 = {'a': 1}
dict2 = {'b': 2}
combined = ChainMap(dict1, dict2)
print(combined['a']) # 1
print(combined['b']) # 2

7. सारांश
यो लेखले Python मा डिक्शनरीहरू मर्ज गर्ने विभिन्निकाहरू व्याख्या गरेको छ, आधारभूतदेखि नवीनतम प्रविधिसम्म सबै कुरा स्पष्ट उदाहरणहरूसहित प्रस्तुत गरेको छ, जसले शुरुआतीहरूलाई सजिलै बुझ्न मद्दत गर्छ।
मुख्य बुँदाहरू
update()मेथड मूल डिक्शनरीलाई परिमार्जन गर्ने सरल र प्रभावकारी तरिका हो।- अनप्याकिङ अपरेटर (
**) विनाशकारी छैन र नयाँ डिक्शनरी सिर्जना गर्न उपयोगी हुन्छ। - मर्ज अपरेटर (
|) Python 3.9 र त्यसपछिका संस्करणहरूमा उपलब्ध छ, र कोडलाई सरल र पढ्न सजिलो बनाउँछ। ChainMapठूलो मात्रामा डेटा प्रभावकारी रूपमा ह्यान्डल गर्दा उपयोगी हुन्छ र स्मृति बचत गर्न सक्छ।
प्रत्येक मेथडको आफ्नै विशेषताहरू छन्, त्यसैले तपाईंको लक्ष्य र परिस्थितिअनुसार उत्तम दृष्टिकोण चयन गर्नु महत्त्वपूर्ण छ। उदाहरणका लागि, ठूलो मात्रामा डेटा प्रोसेस गर्दा वा डिक्शनरी कुञ्जीहरू दोहोरिन नदिन ध्यान दिनु पर्दा, ChainMap वा अनप्याकिङ अपरेटर प्रभावकारी हुन सक्छ।
आगामी वास्तविक प्रोजेक्टहरूमा डिक्शनरीहरू मर्ज गर्दा, यस लेखमा सिकेका विधिहरू लागू गर्न नबिर्सनुहोस्। वास्तविक कोडमा तिनीहरूलाई प्रयोग गर्नु तपाईंको बुझाइलाई गहिरो बनाउने सबैभन्दा प्रभावकारी तरिका हो। साथै, Python मा डेटा म्यानिपुलेशन सम्बन्धी अन्य लेखहरू पनि हेर्नुहोस्।



