ماڈیول اسباق (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(): صرف قدروں کو ختم کرتا ہے۔
اسے آزمائیں
دیا `user = {'nome': 'Ada', 'anni': 36}`، کلید 'email' = 'ada@ex.com' شامل کریں اور پھر .get کے ساتھ ڈیفالٹ 'sconosciuto' کا استعمال کرتے ہوئے کلید 'telefono' کی قدر `email_or_default` کو تفویض کریں۔ `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('role', 'guest')۔
3 کوششوں کے بعد حل دستیاب ہے۔