🔬
🧬
🔭
🪐
🧪
← डैशबोर्ड पर वापस जाएँ
Font Size:

1. परिचय

इस अध्याय में हम पाइथन के दो महत्वपूर्ण कम्पोज़िट डेटा प्रकारों - टपल (Tuple) और डिक्शनरी (Dictionary) - का अध्ययन करते हैं। टपल लिस्ट के समान है, परंतु यह अपरिवर्तनीय (Immutable) होती है, अर्थात बनने के बाद इसके तत्वों को बदला नहीं जा सकता। टपल गोल कोष्ठक () में लिखी जाती है। डिक्शनरी कुंजी-मान (Key-Value) युग्मों का संग्रह है, जिसमें प्रत्येक कुंजी अद्वितीय (Unique) होती है। डिक्शनरी घुँघराले कोष्ठक {} में लिखी जाती है। दोनों डेटा प्रकार वास्तविक प्रोग्रामिंग समस्याओं में अत्यधिक उपयोगी हैं।

2. टपल (Tuple)

टपल का निर्माण

t1 = (1, 2, 3, 4, 5)
t2 = ("सेब", "आम", "केला")
t3 = (1, "दो", 3.5, True)
t4 = ()
t5 = (5,)          # एक तत्व वाली टपल, अल्पविराम आवश्यक
t6 = 1, 2, 3       # बिना कोष्ठक के भी टपल बनती है
print(type(t1))    # <class 'tuple'>

एक तत्व वाली टपल

यदि हम t = (5) लिखते हैं तो यह टपल नहीं, बल्कि पूर्णांक 5 होगी। एक तत्व की टपल के लिए अल्पविराम (Comma) आवश्यक है: t = (5,)

टपल इंडेक्सिंग और स्लाइसिंग

t = (10, 20, 30, 40, 50)
print(t[0])       # 10
print(t[-1])      # 50
print(t[1:3])     # (20, 30)

टपल की अपरिवर्तनीयता

टपल अपरिवर्तनीय है, अतः उसके तत्वों को बदलना असंभव है।

t = (1, 2, 3)
# t[0] = 99    # TypeError: 'tuple' object does not support item assignment

टपल संचालन

a = (1, 2, 3)
b = (4, 5)
print(a + b)       # (1, 2, 3, 4, 5)
print(a * 2)       # (1, 2, 3, 1, 2, 3)
print(2 in a)      # True
print(len(a))      # 3

3. टपल और लिस्ट में अंतर (Tuple vs List)

विशेषता टपल लिस्ट
कोष्ठक () []
परिवर्तनीयता Immutable Mutable
तत्व बदलना असंभव संभव
गति तेज़ अपेक्षाकृत धीमी
मेमोरी कम अधिक
उपयोग निश्चित डेटा परिवर्तनीय डेटा

4. डिक्शनरी (Dictionary)

डिक्शनरी का निर्माण

डिक्शनरी कुंजी-मान युग्मों का संग्रह है। कुंजियाँ अद्वितीय और अपरिवर्तनीय होती हैं, जबकि मान किसी भी प्रकार के हो सकते हैं।

student = {
    "नाम": "राहुल",
    "कक्षा": 11,
    "अंक": 95
}
phone = {"राहुल": 9876543210, "सीमा": 9123456789}
empty_dict = {}
print(type(student))    # <class 'dict'>
print(len(student))     # 3

डिक्शनरी तत्वों तक पहुँच

student = {"नाम": "राहुल", "कक्षा": 11, "अंक": 95}
print(student["नाम"])        # राहुल
print(student.get("कक्षा"))  # 11
print(student.keys())        # कुंजियाँ
print(student.values())      # मान
print(student.items())       # युग्म

डिक्शनरी में जोड़ना और बदलना

student = {"नाम": "राहुल"}
student["कक्षा"] = 11       # नया युग्म जोड़ना
student["नाम"] = "आर्यन"    # मान बदलना
print(student)

डिक्शनरी से हटाना

student = {"नाम": "राहुल", "कक्षा": 11, "अंक": 95}
del student["अंक"]          # युग्म हटाना
student.pop("कक्षा")        # युग्म हटाकर मान लौटाना
student.clear()             # सभी युग्म हटाना

5. डिक्शनरी मेथड (Dictionary Methods)

d = {"a": 1, "b": 2, "c": 3}
print(list(d.keys()))        # ['a', 'b', 'c']
print(list(d.values()))      # [1, 2, 3]
print(list(d.items()))       # [('a', 1), ('b', 2), ('c', 3)]
d.update({"d": 4})           # युग्म जोड़ना/बदलना
print(d.get("x", "नहीं मिला"))  # डिफ़ॉल्ट मान
print(d.pop("a"))            # 1

मेंबरशिप जाँच

किसी डिक्शनरी में कुंजी की मौजूदगी जाँचने के लिए in ऑपरेटर का उपयोग होता है।

d = {"नाम": "राहुल", "कक्षा": 11}
print("नाम" in d)       # True
print("अंक" not in d)   # True

6. डिक्शनरी में लूप (Traversing a Dictionary)

student = {"नाम": "राहुल", "कक्षा": 11, "अंक": 95}
for key in student:
    print(key, student[key])

for key, value in student.items():
    print(key, value)

7. डिक्शनरी के लाभ

  1. तेज़ पहुँच: कुंजी के आधार पर मान तक सीधी पहुँच।
  2. अद्वितीय कुंजी: डुप्लिकेट कुंजी नहीं हो सकती।
  3. पठनीय: डेटा का संबंध स्पष्ट रूप से दिखता है।
  4. गतिशील: आकार बढ़ाया और घटाया जा सकता है।

8. टपल और डिक्शनरी के व्यावहारिक उदाहरण (Practical Examples)

उदाहरण 1: टपल से अधिकतम और न्यूनतम

marks = (45, 67, 89, 34, 78)
print("अधिकतम:", max(marks))
print("न्यूनतम:", min(marks))
print("योग:", sum(marks))

उदाहरण 2: डिक्शनरी में विद्यार्थियों के अंक

results = {}
n = int(input("कितने विद्यार्थी? "))
for i in range(n):
    name = input("नाम: ")
    marks = int(input("अंक: "))
    results[name] = marks
print(results)

उदाहरण 3: डिक्शनरी से डेटा पुनः प्राप्त करना

phone = {"राहुल": 9876543210, "सीमा": 9123456789}
name = input("नाम दर्ज करें: ")
if name in phone:
    print("नंबर:", phone[name])
else:
    print("रिकॉर्ड नहीं मिला")

9. टपल अनपैकिंग (Tuple Unpacking)

टपल के तत्वों को सीधे कई चरों में अलग किया जा सकता है, जिसे टपल अनपैकिंग कहते हैं। चरों की संख्या टपल के तत्वों की संख्या के बराबर होनी चाहिए।

point = (3, 5)
x, y = point
print("x =", x, "y =", y)

student = ("राहुल", 11, 95)
name, cls, marks = student
print(name, cls, marks)

टपल अनपैकिंग का सामान्य उपयोग दो चरों के मानों का आदान-प्रदान करने में भी होता है: a, b = b, a। यह तकनीक कोड को संक्षिप्त और पठनीय बनाती है।

10. डिक्शनरी के व्यावहारिक अनुप्रयोग (Practical Applications of Dictionary)

डिक्शनरी वास्तविक जीवन में संबंधपरक डेटा (जैसे विद्यार्थी से उसके अंक, शब्द से उसका अर्थ, शहर से उसकी जनसंख्या) को संग्रहीत करने के लिए सर्वोत्तम है। डिक्शनरी में लूप के साथ items() का उपयोग कर कुंजी और मान दोनों प्राप्त किए जा सकते हैं।

population = {
    "दिल्ली": 19000000,
    "मुंबई": 20500000,
    "कोलकाता": 14900000
}
for city, pop in population.items():
    print(city, ":", pop)

city = input("जनसंख्या जानने के लिए शहर दर्ज करें: ")
print(population.get(city, "शहर की जानकारी नहीं मिली"))

इसके अतिरिक्त, किसी विद्यालय में अनुभागवार विद्यार्थियों की संख्या, किसी उत्पाद की कीमतों की सूची या शब्दों की गिनती (Word Frequency) जैसी समस्याओं को डिक्शनरी के द्वारा बहुत आसानी से हल किया जा सकता है। डिक्शनरी की कुंजी आधारित पहुँच सूचकांक आधारित पहुँच की तुलना में अधिक अर्थपूर्ण और तेज़ होती है।

11. टपल और डिक्शनरी का संयुक्त उपयोग (Combined Use of Tuple and Dictionary)

वास्तविक प्रोग्रामों में टपल और डिक्शनरी का उपयोग प्रायः साथ-साथ होता है। डिक्शनरी की items() विधि कुंजी-मान युग्मों को टपल के रूप में लौटाती है, जिन्हें लूप में अनपैक किया जा सकता है। इसके अतिरिक्त, डिक्शनरी की कुंजी कोई भी अपरिवर्तनीय मान (जैसे स्ट्रिंग या टपल) हो सकती है। उदाहरण के लिए, किसी खेल के मैदान के निर्देशांकों (coordinates) को टपल के रूप में कुंजी बनाकर उनके साथ जानकारी संग्रहीत की जा सकती है।

board = {}
board[(1, 1)] = "X"
board[(2, 2)] = "O"
for position, player in board.items():
    print("स्थिति:", position, "खिलाड़ी:", player)

students = {
    ("कक्षा 11", "खंड A"): 45,
    ("कक्षा 11", "खंड B"): 42
}
print(students[("कक्षा 11", "खंड A")])

इस संयुक्त उपयोग से यह स्पष्ट होता है कि सही डेटा संरचना का चयन प्रोग्राम की दक्षता और पठनीयता को बढ़ाता है। टपल अपरिवर्तनीय डेटा के लिए और डिक्शनरी संबंधपरक डेटा के लिए सर्वोत्तम विकल्प हैं।

त्वरित पुनरावृत्ति तालिकाएँ

तालिका 1: टपल, लिस्ट और डिक्शनरी की तुलना

विशेषता टपल लिस्ट डिक्शनरी
कोष्ठक () [] {}
परिवर्तनीयता Immutable Mutable Mutable
क्रम व्यवस्थित व्यवस्थित अव्यवस्थित
इंडेक्स स्थिति द्वारा स्थिति द्वारा कुंजी द्वारा
डुप्लिकेट अनुमत अनुमत कुंजी में नहीं

तालिका 2: डिक्शनरी मेथड

मेथड कार्य
keys() सभी कुंजियाँ
values() सभी मान
items() सभी युग्म
get(k) कुंजी का मान
pop(k) युग्म हटाना
update(d) युग्म जोड़ना
clear() सभी हटाना

तालिका 3: टपल संचालन

संचालन उदाहरण परिणाम
संयोजन (1,2) + (3,) (1, 2, 3)
पुनरावृत्ति (1,2) * 2 (1, 2, 1, 2)
मेंबरशिप 2 in (1,2) True
लंबाई len((1,2,3)) 3

माइंड मैप

graph TD A["टपल्स और डिक्शनरी"] --> B["टपल"] A --> C["डिक्शनरी"] B --> D["() अपरिवर्तनीय"] B --> E["एक तत्व के लिए (5,)"] B --> F["तेज़, कम मेमोरी"] C --> G["{} कुंजी-मान युग्म"] C --> H["कुंजी अद्वितीय"] C --> I["keys(), values(), items()"] C --> J["get(), pop(), update()"]

महत्वपूर्ण आरेख (SVG)

टपल (Immutable) लिस्ट (Mutable) t = (1, 2, 3) t[0] = 99 → TypeError L = [1, 2, 3] L[0] = 99 → संभव एक तत्व टपल: (5,) अल्पविराम ज़रूरी टपल तेज़, मेमोरी में छोटी Golden Rule: टपल बदली नहीं जाती
डिक्शनरी कुंजी-मान युग्म {} {\"नाम\": \"राहुल\", \"कक्षा\": 11} कुंजी अद्वितीय डुप्लिकेट कुंजी नहीं हो सकती d[\"नाम\"] = मान पहुँच d.get(k) सुरक्षित पहुँच keys(), values(), items() pop(k), update(d), clear() स्वर्ण नियम: कुंजी अद्वितीय रखें

सामान्य गलतियाँ

  1. एक तत्व की टपल बनाते समय अल्पविराम भूल जाना, जैसे t = (5) लिखना जो टपल नहीं बल्कि int है; सही है t = (5,)
  2. टपल के तत्व को बदलने का प्रयास करना, जिससे TypeError आती है क्योंकि टपल अपरिवर्तनीय है।
  3. टपल और लिस्ट के कोष्ठकों का भ्रम; टपल के लिए () और लिस्ट के लिए [] होता है।
  4. डिक्शनरी में डुप्लिकेट कुंजी बनाना; अंतिम मान ही प्रभावी रहता है।
  5. डिक्शनरी में कुंजी द्वारा मान लेने के लिए गलत तरीका; मौजूद न होने पर d[k] से KeyError आती है, इसके लिए get() उपयोग करें।
  6. टपल को mutable मान लेना; दोनों में अंतर स्पष्ट रखें।
  7. डिक्शनरी को सूचकांक (0, 1) द्वारा एक्सेस करना; डिक्शनरी में केवल कुंजी द्वारा पहुँच होती है।

परीक्षा युक्तियाँ

  1. टपल और लिस्ट में कम से कम पाँच अंतर सारणीबद्ध रूप में लिखें।
  2. एक तत्व की टपल बनाने की विधि (अल्पविराम के साथ) का उल्लेख अवश्य करें।
  3. डिक्शनरी के सभी मेथड (keys, values, items, get, pop, update) के उदाहरण लिखें।
  4. डिक्शनरी में in ऑपरेटर द्वारा कुंजी की जाँच का प्रयोग दिखाएँ।
  5. टपल की अपरिवर्तनीयता को दर्शाने वाला उदाहरण लिखें।
  6. डिक्शनरी और टपल के मिलाकर (नेस्टेड) डेटा संरचनाओं के उदाहरण देने का अभ्यास करें।
  7. get() और d[k] के बीच अंतर को समझाइए; get() मौजूद न होने पर KeyError नहीं देता।

निष्कर्ष

टपल और डिक्शनरी पाइथन के दो शक्तिशाली डेटा प्रकार हैं। टपल की अपरिवर्तनीयता उसे स्थिर डेटा (जैसे निर्देशांक, निश्चित गुण) के लिए उपयुक्त बनाती है, और यह लिस्ट से तेज़ तथा कम मेमोरी लेती है। डिक्शनरी कुंजी-मान युग्मों द्वारा डेटा को अर्थपूर्ण रूप से संग्रहीत करती है, जिससे तेज़ और पठनीय पहुँच संभव होती है। keys(), values(), items(), get(), pop() जैसे मेथड डिक्शनरी प्रबंधन को सरल बनाते हैं। इस अध्याय की समझ वास्तविक डेटा संरचना समस्याओं (जैसे विद्यार्थी रिकॉर्ड, दूरभाष सूची) को हल करने में सीधे उपयोगी है।