इस अध्याय में हम पाइथन के दो महत्वपूर्ण कम्पोज़िट डेटा प्रकारों - टपल (Tuple) और डिक्शनरी (Dictionary) - का अध्ययन करते हैं। टपल लिस्ट के समान है, परंतु यह अपरिवर्तनीय (Immutable) होती है, अर्थात बनने के बाद इसके तत्वों को बदला नहीं जा सकता। टपल गोल कोष्ठक () में लिखी जाती है। डिक्शनरी कुंजी-मान (Key-Value) युग्मों का संग्रह है, जिसमें प्रत्येक कुंजी अद्वितीय (Unique) होती है। डिक्शनरी घुँघराले कोष्ठक {} में लिखी जाती है। दोनों डेटा प्रकार वास्तविक प्रोग्रामिंग समस्याओं में अत्यधिक उपयोगी हैं।
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
| विशेषता | टपल | लिस्ट |
|---|---|---|
| कोष्ठक | () | [] |
| परिवर्तनीयता | Immutable | Mutable |
| तत्व बदलना | असंभव | संभव |
| गति | तेज़ | अपेक्षाकृत धीमी |
| मेमोरी | कम | अधिक |
| उपयोग | निश्चित डेटा | परिवर्तनीय डेटा |
डिक्शनरी कुंजी-मान युग्मों का संग्रह है। कुंजियाँ अद्वितीय और अपरिवर्तनीय होती हैं, जबकि मान किसी भी प्रकार के हो सकते हैं।
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() # सभी युग्म हटाना
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
student = {"नाम": "राहुल", "कक्षा": 11, "अंक": 95}
for key in student:
print(key, student[key])
for key, value in student.items():
print(key, value)
marks = (45, 67, 89, 34, 78)
print("अधिकतम:", max(marks))
print("न्यूनतम:", min(marks))
print("योग:", sum(marks))
results = {}
n = int(input("कितने विद्यार्थी? "))
for i in range(n):
name = input("नाम: ")
marks = int(input("अंक: "))
results[name] = marks
print(results)
phone = {"राहुल": 9876543210, "सीमा": 9123456789}
name = input("नाम दर्ज करें: ")
if name in phone:
print("नंबर:", phone[name])
else:
print("रिकॉर्ड नहीं मिला")
टपल के तत्वों को सीधे कई चरों में अलग किया जा सकता है, जिसे टपल अनपैकिंग कहते हैं। चरों की संख्या टपल के तत्वों की संख्या के बराबर होनी चाहिए।
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। यह तकनीक कोड को संक्षिप्त और पठनीय बनाती है।
डिक्शनरी वास्तविक जीवन में संबंधपरक डेटा (जैसे विद्यार्थी से उसके अंक, शब्द से उसका अर्थ, शहर से उसकी जनसंख्या) को संग्रहीत करने के लिए सर्वोत्तम है। डिक्शनरी में लूप के साथ items() का उपयोग कर कुंजी और मान दोनों प्राप्त किए जा सकते हैं।
population = {
"दिल्ली": 19000000,
"मुंबई": 20500000,
"कोलकाता": 14900000
}
for city, pop in population.items():
print(city, ":", pop)
city = input("जनसंख्या जानने के लिए शहर दर्ज करें: ")
print(population.get(city, "शहर की जानकारी नहीं मिली"))
इसके अतिरिक्त, किसी विद्यालय में अनुभागवार विद्यार्थियों की संख्या, किसी उत्पाद की कीमतों की सूची या शब्दों की गिनती (Word Frequency) जैसी समस्याओं को डिक्शनरी के द्वारा बहुत आसानी से हल किया जा सकता है। डिक्शनरी की कुंजी आधारित पहुँच सूचकांक आधारित पहुँच की तुलना में अधिक अर्थपूर्ण और तेज़ होती है।
वास्तविक प्रोग्रामों में टपल और डिक्शनरी का उपयोग प्रायः साथ-साथ होता है। डिक्शनरी की 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")])
इस संयुक्त उपयोग से यह स्पष्ट होता है कि सही डेटा संरचना का चयन प्रोग्राम की दक्षता और पठनीयता को बढ़ाता है। टपल अपरिवर्तनीय डेटा के लिए और डिक्शनरी संबंधपरक डेटा के लिए सर्वोत्तम विकल्प हैं।
| विशेषता | टपल | लिस्ट | डिक्शनरी |
|---|---|---|---|
| कोष्ठक | () | [] | {} |
| परिवर्तनीयता | Immutable | Mutable | Mutable |
| क्रम | व्यवस्थित | व्यवस्थित | अव्यवस्थित |
| इंडेक्स | स्थिति द्वारा | स्थिति द्वारा | कुंजी द्वारा |
| डुप्लिकेट | अनुमत | अनुमत | कुंजी में नहीं |
| मेथड | कार्य |
|---|---|
| keys() | सभी कुंजियाँ |
| values() | सभी मान |
| items() | सभी युग्म |
| get(k) | कुंजी का मान |
| pop(k) | युग्म हटाना |
| update(d) | युग्म जोड़ना |
| clear() | सभी हटाना |
| संचालन | उदाहरण | परिणाम |
|---|---|---|
| संयोजन | (1,2) + (3,) | (1, 2, 3) |
| पुनरावृत्ति | (1,2) * 2 | (1, 2, 1, 2) |
| मेंबरशिप | 2 in (1,2) | True |
| लंबाई | len((1,2,3)) | 3 |
t = (5) लिखना जो टपल नहीं बल्कि int है; सही है t = (5,)।d[k] से KeyError आती है, इसके लिए get() उपयोग करें।in ऑपरेटर द्वारा कुंजी की जाँच का प्रयोग दिखाएँ।टपल और डिक्शनरी पाइथन के दो शक्तिशाली डेटा प्रकार हैं। टपल की अपरिवर्तनीयता उसे स्थिर डेटा (जैसे निर्देशांक, निश्चित गुण) के लिए उपयुक्त बनाती है, और यह लिस्ट से तेज़ तथा कम मेमोरी लेती है। डिक्शनरी कुंजी-मान युग्मों द्वारा डेटा को अर्थपूर्ण रूप से संग्रहीत करती है, जिससे तेज़ और पठनीय पहुँच संभव होती है। keys(), values(), items(), get(), pop() जैसे मेथड डिक्शनरी प्रबंधन को सरल बनाते हैं। इस अध्याय की समझ वास्तविक डेटा संरचना समस्याओं (जैसे विद्यार्थी रिकॉर्ड, दूरभाष सूची) को हल करने में सीधे उपयोगी है।