मॉड्यूल पाठ (3/4)
शब्दकोश
एक शब्दकोश (dict) एक कुंजी → मान मानचित्र है: आप एक कुंजी जोड़ते हैं
(लगभग हमेशा एक स्ट्रिंग) किसी भी प्रकार के मान के साथ। यह मौलिक है
वास्तविक दुनिया की संस्थाओं के मॉडलिंग के लिए डेटा संरचना।
एक शब्दकोष बनाना
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# costruttore alternativo
utente = dict(nome="Ada", anni=36, attivo=True)कुंजियाँ हैशेबल (अपरिवर्तनीय) होनी चाहिए: स्ट्रिंग्स, संख्याएं, हैशेबल के टुपल्स तत्व. दूसरी ओर, मूल्य कुछ भी हो सकते हैं - यहां तक कि अन्य निर्देश भी।
पहुँचें, संशोधित करें, हटाएँ
utente["nome"] # 'Ada'
utente["email"] # KeyError!
utente.get("email") # None (default sicuro)
utente.get("email", "—") # '—' (default custom)
utente["citta"] = "Roma" # aggiunge / aggiorna
del utente["attivo"] # rimuoveएक आदेश पर बार-बार दोहराना
for chiave in utente: # itera sulle CHIAVI (default)
print(chiave, utente[chiave])
for chiave in utente.keys(): # esplicito
...
for valore in utente.values():
print(valore)
for chiave, valore in utente.items(): # idiom più comune
print(f"{chiave} = {valore}")पुनरावृत्ति क्रम सम्मिलन आदेश है (पायथन 3.7 के बाद से गारंटीकृत)। आगे)।
क्या कुंजी मौजूद है?
"nome" in utente # True
"email" in utente # False (NON usa il valore, usa la chiave!)setdefault: पहली पहुंच पर प्रारंभ करें
एक बारंबार पैटर्न: "यदि कुंजी मौजूद नहीं है, तो डिफ़ॉल्ट डालें; किसी में भी केस वर्तमान मान लौटाएं"।
gruppi = {}
for nome in ["Ada", "Linus", "Ada", "Grace", "Linus", "Ada"]:
gruppi.setdefault(nome, []).append(1)
# {'Ada': [1, 1, 1], 'Linus': [1, 1], 'Grace': [1]}गिनती के विशिष्ट मामले के लिए collections.Counter भी है (हम)।
इसे stdlib मॉड्यूल में देखेंगे)।
शब्दकोशों पर बार-बार विचार करना
आप एक शब्दकोश को कई तरीकों से दोहरा सकते हैं:
for k in d: केवल कुंजियों पर लूप (डिफ़ॉल्ट व्यवहार)।for k, v in d.items(): कुंजी-मूल्य जोड़े पर एक साथ लूप (अत्यधिक उपयोगी)।for v in d.values(): केवल मानों पर लूप।
इसे अजमाएं
`उपयोगकर्ता = {'nome': 'Ada', 'anni': 36}` को देखते हुए, कुंजी 'email' = 'ada@ex.com' जोड़ें और फिर डिफ़ॉल्ट 'sconosciuto' के साथ .get का उपयोग करके कुंजी 'telefono' का मान `email_or_default` पर निर्दिष्ट करें। `ईमेल_या_डिफ़ॉल्ट` का मूल्यांकन करें।
संकेत दिखाएँ
.get('telefono', 'sconosciuto') KeyError नहीं बढ़ाता।
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
दिया गया `कीमतें = {'मेला': 1.2, 'पेरा': 1.5, 'कीवी': 2.0}`, सभी मूल्यों के योग की गणना करें और इसे `कुल` में निर्दिष्ट करें। 'कुल' का मूल्यांकन करें.
संकेत दिखाएँ
sum(prices.values()) सभी मानों को जोड़ता है।
3 प्रयासों के बाद समाधान उपलब्ध है
अतिरिक्त चुनौती
Given the dictionary `user = {'name': 'Alice'}`, use the `.get()` method to retrieve the value of the key `'role'`. If the key does not exist, make it return the default value `'guest'`. Store the result in `user_role` and evaluate it.
संकेत दिखाएँ
प्राप्त विधि फ़ॉलबैक के रूप में दूसरे पैरामीटर को स्वीकार करती है: user.get('भूमिका', 'अतिथि')।
3 प्रयासों के बाद समाधान उपलब्ध है