डिक्शनरी बनाना और key से पढ़ना
D = {'Riya': 91, 'Aman': 85, 'Dev': 78}, E = {}, dict(a=1, b=2)।
पढ़ना: D['Aman'] → 85। जो key न हो उस पर KeyError। D.get('Zoya') त्रुटि की जगह None देता है, और D.get('Zoya', 0) 0 देता है।
key अनोखी और इम्यूटेबल (int, str, tuple) हो; लिस्ट key नहीं बन सकती। 'Riya' in D key जाँचता है, value नहीं।
जोड़ना और बदलना
D['Zoya'] = 88 # नई key → जोड़ा जुड़ा
D['Riya'] = 95 # पुरानी key → मान बदला
del D['Dev'] # जोड़ा हटाओ
D.update({'Aman': 90, 'Ira': 70})डिक्शनरी म्यूटेबल है, और Python 3.7 से key जोड़ने का क्रम याद रखती है।
डिक्शनरी का ट्रैवर्सल
for k in D:
print(k, D[k])
for k, v in D.items():
print(k, '→', v)
डिक्शनरी फ़ंक्शन और मेथड
| मेथड | काम |
|---|---|
| len(D) | जोड़ों की संख्या |
| D.keys(), D.values(), D.items() | सारी key / value / (key, value) जोड़े |
| D.get(k, default) | k का मान, या default (त्रुटि नहीं) |
| D.update(D2) | D2 से जोड़े जोड़ता या बदलता है |
| D.pop(k) | k हटाकर उसका मान लौटाता है |
| D.popitem() | आख़िरी जोड़ा हटाकर लौटाता है |
| D.setdefault(k, v) | D[k] देता है; k न हो तो v के साथ जोड़ता है |
| dict.fromkeys(keys, v) | दी गई key सब v मान के साथ |
| D.copy(), D.clear() | कॉपी / सब जोड़े हटाना |
| sorted(D), max(D), min(D) | key पर काम करते हैं |
प्रोग्राम: स्ट्रिंग में हर अक्षर गिनना
s = input('टेक्स्ट लिखें: ')
d = {}
for ch in s:
if ch in d:
d[ch] += 1
else:
d[ch] = 1
print(d)
# 'banana' → {'b': 1, 'a': 3, 'n': 2}छोटा रूप: d[ch] = d.get(ch, 0) + 1। यही तरीका शब्द गिनने में: s.split() पर लूप।
प्रोग्राम: छात्र अंक डिक्शनरी
n = int(input('कितने छात्र? '))
marks = {}
for i in range(n):
name = input('नाम: ')
marks[name] = int(input('अंक: '))
for name, m in marks.items():
if m > 75:
print(name)
मुख्य सूत्र और परिभाषाएँ
- D = {key: value, …}; पढ़ने के लिए D[key]
- न मिलने वाली key: D[k] → KeyError; D.get(k) → None
- D[k] = v जोड़ता या बदलता है
- key: अनोखी और इम्यूटेबल
- गिनती: d[ch] = d.get(ch, 0) + 1
हल किए गए उदाहरण
1. D = {'a': 1, 'b': 2}। D['b'], len(D), 'a' in D, 1 in D?
2; 2; True; False (in key जाँचता है, 1 value है)।
2. आउटपुट? D = {'x': 5}; D['y'] = 7; D['x'] = 9; print(D)
{'x': 9, 'y': 7}
3. आउटपुट? D = {'Riya': 91, 'Aman': 85}; print(D.get('Dev', 'absent'), D.pop('Aman'), D)
absent 85 {'Riya': 91}
4. 'hello' के अक्षर गिनें।
{'h': 1, 'e': 1, 'l': 2, 'o': 1}
5. 'to be or not to be' के शब्द गिनें।
d = {} for w in 'to be or not to be'.split(): d[w] = d.get(w, 0) + 1 # {'to': 2, 'be': 2, 'or': 1, 'not': 1}
6. {'Riya': 91, 'Aman': 85, 'Dev': 97} में सबसे ज़्यादा अंक वाला छात्र?
best = max(D, key=D.get) → 'Dev'। या लूप से सबसे बड़े मान वाला नाम रखें।
आम गलतियाँ
- D[k] से न मिलने वाली key पढ़ना और KeyError पाना। get() लें या पहले in से जाँचें।
- लिस्ट को key बनाना। key इम्यूटेबल होनी चाहिए।
- सोचना कि 'in' value जाँचता है। यह key जाँचता है; value के लिए v in D.values()।
- दो बराबर key रखने की उम्मीद। दोहराई key पुराना मान मिटा देती है।