Dictionary bilan ishlashda ba'zida kalit mavjud yoki yo'qligini bilmay qiymat olishga urinishimiz mumkin. Bu holda xatolarni oldini olish uchun get() va pop() metodlaridan foydalanish tavsiya etiladi.
Agar kalitni dict[kalit] ko'rinishida ishlatib qiymat olmoqchi bo'lsak va kalit mavjud bo'lmasa, Python KeyError xatosini beradi. Bu dastur to'xtaganini bildiradi.
narxlar = {"olma": 5000, "banan": 8000, "gilos": 15000}
# Bu xavfsiz — kalit bor
print(narxlar["olma"]) # 5000
# Bu xato beradi — kalit yo'q!
print(narxlar["tarvuz"]) # KeyError: 'tarvuz'get(kalit, standart) metodi kalit mavjud bo'lsa qiymatini qaytaradi, yo'q bo'lsa dastur xato bermaydi — buning o'rniga ikkinchi argument sifatida berilgan standart qiymatni qaytaradi. Agar standart ko'rsatilmasa, None qaytaradi.
narxlar = {"olma": 5000, "banan": 8000, "gilos": 15000}
# Kalit bor — qiymatni qaytaradi
print(narxlar.get("olma")) # 5000
# Kalit yo'q — None qaytaradi
print(narxlar.get("tarvuz")) # None
# Kalit yo'q — standart qiymat qaytaradi
print(narxlar.get("tarvuz", 0)) # 0
print(narxlar.get("tarvuz", "Topilmadi")) # Topilmadiget() ayniqsa foydalanuvchi kiritgan ma'lumotlarni tekshirishda qulay:
# Foydalanuvchi so'ragan mahsulotning narxini topish
mahsulot = "apelsin"
narx = narxlar.get(mahsulot, "Bu mahsulot mavjud emas")
print(f"{mahsulot}: {narx}") # apelsin: Bu mahsulot mavjud emaspop(kalit) metodi kalitga mos elementni dictionarydan o'chirib, uning qiymatini qaytaradi. Bu del dict[kalit] dan farqi shundaki, pop() qiymatni o'chirishdan oldin qaytaradi.
narxlar = {"olma": 5000, "banan": 8000, "gilos": 15000}
# Bananlarni o'chirish va narxini olish
olingan_narx = narxlar.pop("banan")
print(olingan_narx) # 8000
print(narxlar) # {'olma': 5000, 'gilos': 15000} — banan yo'q # Kalit topilmadiMuhim qoidalar:
dict[kalit] — kalit yo'q bo'lsa KeyError beradi, ehtiyot bo'lingget(kalit, standart) — kalit yo'q bo'lsa xato bermaydi, standart qaytaradipop(kalit) — elementni o'chirib qiymatini qaytaradipop(kalit, standart) — kalit yo'q bo'lsa ham xato bermasdan standartni qaytaradiXavfsiz lug'at bilan ishlash
Quyidagi savollarga javob bering:
get() metodi kalit topilmagan holda nima qaytaradi (standart ko'rsatilmasa)?dict[kalit] va dict.get(kalit) ning asosiy farqi nima?pop() metodi qanday ishlaydi?Bu mashq orqali siz:
get() va pop() metodlarini to'g'ri tushunasiz