مرکزی مواد پر جائیں
ماڈیول 3 · سبق 3 از 4کورس میں 11/36~12 min
ماڈیول اسباق (3/4)

لغتیں

ایک لغت (dict) ایک کلید → قدر نقشہ ہے: آپ ایک کلید کو جوڑتے ہیں (تقریبا ہمیشہ ایک تار) کسی بھی قسم کی قدر کے ساتھ۔ یہ بنیادی ہے۔ حقیقی دنیا کے اداروں کی ماڈلنگ کے لیے ڈیٹا کا ڈھانچہ۔

لغت بنانا

Python
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# costruttore alternativo
utente = dict(nome="Ada", anni=36, attivo=True)

چابیاں ہیش ایبل (غیر تبدیل) ہونی چاہئیں: تار، نمبر، ہیش ایبل کے ٹوپل عناصر قدریں، دوسری طرف، کچھ بھی ہو سکتی ہیں - یہاں تک کہ دوسرے حکم بھی۔

رسائی، ترمیم، حذف

Python
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

ایک ڈکٹ پر تکرار کرنا

Python
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 کے بعد سے گارنٹی شدہ آگے)۔

کیا کلید موجود ہے؟

Python
"nome" in utente     # True
"email" in utente    # False     (NON usa il valore, usa la chiave!)

setdefault: پہلی رسائی پر شروع کریں۔

ایک متواتر نمونہ: "اگر کلید موجود نہیں ہے تو، پہلے سے طے شدہ رکھیں؛ کسی میں کیس موجودہ قیمت واپس کریں"۔

Python
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(): صرف قدروں کو ختم کرتا ہے۔

اسے آزمائیں

ورزش#python.m3.l3.e1
کوششیں: 0لوڈ ہو رہا ہے…

دیا `user = {'nome': 'Ada', 'anni': 36}`، کلید 'email' = 'ada@ex.com' شامل کریں اور پھر .get کے ساتھ ڈیفالٹ 'sconosciuto' کا استعمال کرتے ہوئے کلید 'telefono' کی قدر `email_or_default` کو تفویض کریں۔ `email_or_default` کا اندازہ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

.get('telefono', 'sconosciuto') KeyError کو نہیں بڑھاتا ہے۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#python.m3.l3.e2
کوششیں: 0لوڈ ہو رہا ہے…

دی گئی `قیمتیں = {'میلہ': 1.2، 'پیرا': 1.5، 'کیوی': 2.0}`، تمام اقدار کے مجموعہ کی گنتی کریں اور اسے `کل` پر تفویض کریں۔ 'مجموعی' کا اندازہ لگائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

sum(prices.values()) تمام اقدار کو شامل کرتا ہے۔

3 کوششوں کے بعد حل دستیاب ہے۔

اضافی چیلنج

ورزش#python.m3.l3.e3
کوششیں: 0لوڈ ہو رہا ہے…

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 کوششوں کے بعد حل دستیاب ہے۔