মূল কন্টেন্টে যান
মডিউল 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

একটি dict উপর পুনরাবৃত্তি

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' ব্যবহার করে `email_or_default` কী 'telefono'-এর মান নির্ধারণ করুন। `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.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

get পদ্ধতি একটি ফলব্যাক হিসাবে একটি দ্বিতীয় প্যারামিটার গ্রহণ করে: user.get('ভূমিকা', 'অতিথি')।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ