शुरुआत से Pythonशुरुआतीपाठ 1037 मिनट का पाठ

लिस्ट और डिक्शनरी

कई वैल्यूज़ को एक साथ रखें। एक लिस्ट चीज़ों को क्रम में रखती है; एक डिक्शनरी हर नाम को किसी वैल्यू से जोड़ती है, जैसे कोई प्राइस लिस्ट।

पाठ वीडियो में

60 सेकंड में

लिस्ट और डिक्शनरी

कई वैल्यूज़ को एक साथ रखें। एक लिस्ट चीज़ों को क्रम में रखती है; एक डिक्शनरी हर नाम को किसी वैल्यू से जोड़ती है, जैसे कोई प्राइस लिस्ट।

1/4
आसान शब्दों में
एक list कागज़ पर बनी खरीदारी की लिस्ट जैसी होती है: चीज़ें क्रम से एक के नीचे एक लिखी होती हैं। एक dictionary किराने की दुकान के रेट बोर्ड जैसी होती है: हर चीज़ के आगे उसकी कीमत लिखी होती है। आप "दूध" देखते हैं और उसकी कीमत पता कर लेते हैं।

लिस्ट

एक लिस्ट को स्क्वायर ब्रैकेट में लिखा जाता है, और चीज़ों के बीच कॉमा लगाया जाता है। हर चीज़ का एक पोज़ीशन नंबर होता है जिसे index कहते हैं, और गिनती 0 से शुरू होती है।
Python: a list of markspython
marks = [78, 92, 65, 88]
print(marks[0])        # first item: 78
print(marks[-1])       # last item: 88
print(len(marks))      # how many items: 4
marks.append(71)       # add one to the end
print(marks)
marks[2] = 67          # change the third item
print(marks)
आप चाहते हैं…कोड[78, 92, 65] के लिए नतीजा
पहला आइटम पानाmarks[0]78
आखिरी आइटम पानाmarks[-1]65
आइटम की गिनती करनाlen(marks)3
एक आइटम जोड़नाmarks.append(50)[78, 92, 65, 50]
जांचें कि कोई वैल्यू मौजूद है या नहीं92 in marksTrue
सॉर्ट करनाsorted(marks)[65, 78, 92]
लिस्ट में टेक्स्ट भी रखा जा सकता है: stations = ["Chennai", "Katpadi", "Bengaluru"]। और आप for के साथ लिस्ट पर लूप चला सकते हैं, जैसा आपने पिछले पाठ में किया था।

डिक्शनरी

डिक्शनरी कर्ली ब्रैकेट के अंदर key: value के जोड़ों में डेटा स्टोर करती है। इसमें आप चीज़ों को पोज़ीशन से नहीं, बल्कि 'की' (key) से खोजते हैं।
Python: a price boardpython
prices = {"milk": 30, "bread": 45, "eggs": 7}   # made-up prices in rupees
print(prices["bread"])          # look up by key: 45
prices["rice"] = 60             # add a new item
prices["milk"] = 32             # change a price
print(prices)
print("sugar" in prices)        # is this key there? False
print(prices.get("sugar", 0))   # get with a default: 0
सावधान रहें
ऐसी 'की' माँगने पर जो मौजूद नहीं है, जैसे prices["sugar"], प्रोग्राम KeyError के साथ रुक जाता है। पहले in से जांचें, या .get(key, default) का इस्तेमाल करें, जो एरर देने के बजाय डिफ़ॉल्ट वैल्यू देता है।

डिक्शनरी पर लूप चलाना

Python: print the price boardpython
prices = {"milk": 30, "bread": 45, "eggs": 7}
for item, price in prices.items():
    print(f"{item:<6} Rs {price}")

लिस्ट और डिक्शनरी एक साथ

असली प्रोग्रामों में अक्सर दोनों का इस्तेमाल होता है। शॉपिंग लिस्ट बताती है कि आपने क्या खरीदा (यह एक लिस्ट है, और इसमें कोई चीज़ दो बार भी आ सकती है)। प्राइस बोर्ड बताता है कि हर चीज़ की कीमत कितनी है (यह एक डिक्शनरी है)।
Python: a first billpython
prices = {"milk": 30, "bread": 45, "eggs": 7}
cart = ["milk", "eggs", "eggs", "bread"]
total = 0
for item in cart:
    total += prices[item]
print("Bill: Rs", total)

डिक्शनरी से गिनती करना

गिनती करने के लिए भी डिक्शनरी बहुत बढ़िया है। खाली डिक्शनरी से शुरू करें। हर आइटम के लिए उसकी गिनती में 1 जोड़ते जाएं।
Python: how many of each?python
cart = ["milk", "eggs", "eggs", "bread", "eggs"]
counts = {}
for item in cart:
    counts[item] = counts.get(item, 0) + 1
print(counts)
लिस्ट का इस्तेमाल तब करें जब…
  • क्रम (order) मायने रखता हो: जैसे एक ओवर की गेंदें, किसी रूट के स्टेशन
  • एक ही वैल्यू एक से ज़्यादा बार आ सकती हो
  • आप चीज़ों को पोज़ीशन से खोजते हों: पहला, आखिरी, तीसरा
डिक्शनरी का इस्तेमाल तब करें जब…
  • आप चीज़ों को नाम या कोड से खोजते हों: दूध की कीमत, आशा के नंबर
  • हर 'की' सिर्फ़ एक ही बार आती हो
  • आप नाम के हिसाब से चीज़ों को गिनना या ग्रुप में बांटना चाहते हों
इसे आज़माएं। प्राइस बोर्ड में अपनी पसंद की कीमत के साथ "rice" जोड़ें, और कार्ट में भी चावल (rice) जोड़ें। बिल को दोबारा रन करें। क्या कुल रकम सही बढ़ी?

और देखें और पढ़ें

लैब

दुकान का एक बिल कैलकुलेटर जो प्राइस बोर्ड से कार्ट की कुल रकम जोड़ता है, और हर आइटम को गिनता है।

~15 min

समस्या

आप एक छोटी दुकान चलाते हैं। इन दो फ़ंक्शनों को पूरा करें:

  1. bill_total(cart, prices): cart आइटम के नामों की एक लिस्ट है (एक ही आइटम एक से ज़्यादा बार आ सकता है) और prices कीमतों की एक डिक्शनरी है। कुल रकम रुपयों में रिटर्न करें। अगर कोई आइटम प्राइस बोर्ड पर नहीं है, तो उसे छोड़ दें (कुछ न जोड़ें) और एक छोटा मैसेज प्रिंट करें जैसे No price for gold, ताकि दुकानदार को पता चल सके।
  2. count_items(cart): एक डिक्शनरी रिटर्न करें जो दिखाए कि कार्ट में हर आइटम की कितनी संख्या है, उदाहरण के लिए {"milk": 2, "bread": 1}।

टेस्ट करने के लिए Run दबाएं, फिर Check करें। यहाँ तक पहुँचने के लिए बहुत बढ़िया: असली बिलिंग सॉफ़्टवेयर की शुरुआत ऐसे ही होती है!

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1पहले जांचे बिना <code>total += prices[item]</code> लिखना जोखिम भरा क्यों है?दिखाएं

अगर कोई ग्राहक ऐसी चीज़ खरीदता है जो प्राइस बोर्ड पर नहीं है, तो prices[item] एक KeyError देता है और पूरा बिल रुक जाता है। if item in prices से जांच करने पर, या prices.get(item) का इस्तेमाल करने पर प्रोग्राम छूटी हुई कीमत को आसानी से संभाल लेता है और दुकानदार को बता देता है।

Q2अपने दोनों फ़ंक्शनों का इस्तेमाल करके, आप हर आइटम के लिए एक लाइन वाला सही बिल कैसे प्रिंट कर सकते हैं, जैसे <code>eggs x2 = Rs 14</code>?दिखाएं

पहले counts = count_items(cart) निकालें। फिर लूप चलाएं: for item, n in counts.items(): और, अगर आइटम की कीमत मौजूद है, तो प्रिंट करें f"{item} x{n} = Rs {n * prices[item]}"। आखिर में bill_total(cart, prices) प्रिंट करें। दोनों जवाब एक ही डेटा से आते हैं, इसलिए वे मेल खाने चाहिए।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

गिनती 0 से क्यों शुरू होती है?

इंडेक्स पायथन को बताता है कि शुरुआत से कितने कदम आगे बढ़ना है। पहला आइटम 0 कदम की दूरी पर होता है। आपको जल्दी ही इसकी आदत हो जाएगी। नेगेटिव इंडेक्स पीछे से गिने जाते हैं: -1 आखिरी आइटम होता है।

क्या किसी डिक्शनरी में एक ही 'की' वाले दो आइटम हो सकते हैं?

नहीं। हर 'की' यूनीक होती है। अगर आप prices["milk"] दोबारा सेट करते हैं, तो पुरानी वैल्यू बदल जाती है। अगर आपको एक ही की के लिए कई वैल्यूज़ रखनी हैं, तो वैल्यू के तौर पर एक लिस्ट स्टोर करें।

sorted(marks) और marks.sort() में क्या अंतर है?

sorted(marks) आपको एक नई सॉर्ट की हुई लिस्ट देता है और मूल (original) लिस्ट को वैसे ही रहने देता है। marks.sort() मूल लिस्ट को ही सॉर्ट कर देता है और कुछ भी रिटर्न नहीं करता। दोनों ही काम के हैं।

क्या किसी लिस्ट में अलग-अलग तरह का डेटा हो सकता है?

हाँ, उदाहरण के लिए ["Asha", 14, 87.5]। लेकिन जब सभी आइटम एक ही तरह के हों, तब लिस्ट इस्तेमाल करना सबसे आसान होता है। अलग-अलग नाम वाले हिस्सों के रिकॉर्ड के लिए, डिक्शनरी ज़्यादा साफ़ और बेहतर होती है: {"name": "Asha", "age": 14}।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें