#14 LUG'AT BILAN TANISHUV
Yangi ma'lumot turi - Dictionary bilan tanishamiz.
Ushbu darsda yangi ma'lumot turi, Lug'at (Dictionary) bilan tanishamiz. Dars davomida lug'at yaratish, unga ma'lumot qo'shish, lug'atning ichida ro'yxat yoki aksincha ro'yxatning ichida lug'at saqlash ka'bi mavuzlar bilan tanishamiz.
Lug'at, ma'lumotlarni bizga tushunarliroq ko'rinishda saqlash imkonini beradi. Misol uchun biz biror avtomobilga oid lug'at yaratishimiz va lug'atda shu avtoga tegishli barcha ma'lumotlarni saqlashmiz mumkin (nomi, rangi, yili, motori, narhi va hokazo).
LUG'AT (DICTIONARY) NIMA?
Keling, nima uchun bu ma'lumot turi lug'at (dictionary) deyilishini tushunish uchun, oddiy lu'gatga qaraymiz. Odatda, lug'atdagi ma'umotlar ikki qismdan iborat bo'ladi: kalit so'z va izoh (yoki tarjima).
Xuddi oddiy lug'atlardagi ka'bi Python lug'atidagi ma'lumotlar ham ikki qismdan iborat bo'ladi: kalit so'z va qiymat (ingliz tilida key-value pair yoki kalit so'z-qiymat juftligi deyiladi).
Dasturlashda ko'p ishlatiladigan atamalarni ingliz tilida yodlab qolish juda muhim! Bu sizga kelajakda yangi ma'lumotlar izlashda, xatolar usitda ishlashda va umuman ish faoliyatingizda ko'p asqotadi. Shuing uchun variable, integer, float, string, list, tuple, dictionary, function, loop, va boshqa so'zlarni yaxshilab o'zlashtirib oling.
Keling, sodda lug'at yaratamiz:
Yuqorida car_0
degan lug'at yaratdik. Lu'gatda 2 ta ma'lumot bor: mashinaning modeli (ferrari) va rangi (qizil). Bu yerda 'model'
va 'rang'
kalit so'zlar, 'ferrari'
va 'qizil'
esa mos keluvchi kalit so'zlarning qiymatlari. Kalit so'z va qiymat orasi ikki nuqta (:
) bilan, lug'atdagi har bir juftlik esa vergul (,
) bilan ajratilgan.
LUG'AT BILAN ISHLASH
Demak, Pytonda lug'at kalit so'z-qiymat juftliklarining yi'ginidisi ekan. Lug'atdagi biror qiymatni ko'rish uchun unga kalit so'z orqali murojat qilamiz:
Natija: ferrari
Natija: qizil
Lug'atdagi qiymatlar son (int
, float
), matn (string
), ro'yxat (list
, tuple
) va hatto boshqa lug'at ham bo'lishi mumkin.
Natija: Murod Olimov, 2000-yilda tu'gilgan, 20 yoshda
YANGI JUFTLIK QO'SHISH
Lug'aga yangi kalit so'z va qiymatlar qo'shishimiz ham mumkin. Keling, yuqoridagi talaba_0
nomli lu'gatga yana 2 ta yangi, kurs va fakultet nomli, kalit so'zlar va qiymatlar qo'shamiz:
Lug'atni konsolga chiqarib ko'ramiz:
Natija: {'ism': 'abdulloh', 'yosh': 20, 't_yil': 2000, 'kurs': 4, 'fakultet': 'informatika'}
BO'SH LUG'AT
Ba'zida dastur boshida bo'sh lug'at yaratib, dastur davomida lug'atga yangi ma'lumotlar kiritib borish talab qilinishi mumkin. Bundah holatda bo'sh lug'at quyidagicha yaratiladi:
Dastur davomida esa lug'atga qiymatlar kiritib borilishi mumkin:
Natija:
{'ism': 'qobil rasulov', 'kurs': 3, 'yosh': 20}
Talaba Qobil Rasulov 3-kurs
Lug'atga kalit so'zlar qanday ketma-ketlikda kiritilsa, shu ketma-ketlik saqlanib qoladi.
QIYMATNI O'ZGARTIRISH
Biror kalit so'zga tegishli qiymatni o'zgartirish esa quyidgachia amalga oshiriladi:
Natija: Talaba Qobil Rasulov 4-kurs
KALIT SO'Z-QIYMAT JUFTLIGINI O'CHIRISH
Lu'gatdagi biror juftlik kerak emas bo'lsa uni del operatori yordamida lug'atdan olib tashlashimiz mumkin:
Natija:
{'ism': 'murod olimov', 'yosh': 20, 't_yil': 2000}
{'ism': 'murod olimov', 't_yil': 2000}
LUG'ATNI QATORLARGA BO'LIB YOZISH
Uzung lug'atlarni bir necha qatorga bo'lib yozishimiz ham mumkin. Keling quyidagi misolni ko'ramiz, siz do'stlaringizdan ular qanday telefon ishlatishini so'radingiz va javoblarni bitta lug'atga joylamoqchisiz:
Demak, lug'atni qatorga bo'lib yozish uchun katta qavs ochamiz, yangi qatordan joy tashlab, birinchi klit so'z va qiymatni kiritamiz, qator oxirida vergul qo'yib, yangi qatordan keyingi juftlikni yozamiz va hokazo. Oxirgi juftlikdan so'ng vergul qo'ymasdan qator tashlab, katta qavsni yopamiz.
Lug'atlarning ishlatilish doirasi juda keng va sizning yondoshuvingizga bog'liq xolos. Yuqoridagi lug'atga ham e'tibor qilsangiz, biz bir narsa (shaxs, avto) haqida ko'p ma'lumotlarni emas, ko'pchilik haqida bir hil ma'lumotlarni saqladik.
get()
METODI
get()
METODIBiz shu vaqtgacha lug'atdagi qiymatlarni ko'rish uchun to'g'ridan-to'g'ri kalit so'z orqali murojat qilayotgan edik. Bu usulning kamchiligi shundaki, agar lug'atda siz so'ragan kalit topilmasa, dastur KeyError xatoligi bilan to'xtab qoladi.
Natija: Alining telefoni iphone x
Natija: KeyError: 'hasan'
Lug'atda 'hasan'
kalit so'zi bo'lmagani uchun, yuqoridagi kod KeyError degan xatoni qaytardi. KeyError ham Run time error qatoriga kiradi.
Biz kelgusi darslarimizda Pythondagi xatolarni dastur bajarilishi jarayonida "tutib olishni" o'rganamiz. Hozircha esa get()
metodi yordamida lug'atga murojat qilish va mavjud bolmagan kalitning o'rniga biror xabar qaytarishni ko'raylik.
Yuqorida, lug'at nomidan so'ng .get() metodini yozdik, va argumentlar sifatida kalit so'z ('hasan'
) va kalit mavjud bo'lmaganda chiqadigan xabarni yozdik ('Bunday ism mavjud emas'
).
Natija: Bunday ism mavjud emas
Agar .get()
metodida ikkinchi argumentni tashlab ketsangiz, va kalit mavjud bo'lmasa .get()
metodi None
degan qiymatni qaytaradi. None
- qiymat mavjud emas degan ma'noni beradi.
Natija: None
AMALIYOT
otam (onam, akam, ukam, va hokazo) degan lug'at yarating va lug'atga shu inson haqida kamida 3 ta m'alumot kiriting (ismi, tu'gilgan yili, shahri, manzili va hokazo). Lug'atdagi ma'lumotni matn shaklida konsolga chiqaring :
Otamning ismi Mavlutdin, 1954-yilda, Samarqand viloyatida tug'ilgan
Oila a'zolaringizning sevimli taomlari lug'atini tuzing. Lug'atda kamida 5 ta ism-taom jufltigi bo'lsin. Kamida uch kishining sevimli taomini konsolga chiqaring:
Alining sevimli taomi osh
Python izohli lu'gati tuzing: Lug'atga shu kunga qadar o'rgangan 10 ta so'z (atamani) kiriting (masalan integer, float, string, if, else va hokazo) va har birining qisqacha tarjimasini yozing.
Foydalanuvchidan biror so'z kiritishni so'rang va so'zning tarjimasini yuqoridagi lug'atdan chiqarib bering. Agar so'z lu'gatda mavjud bo'lmasa, "Bunda so'z mavjud emas" degan xabarni chiqaring.
Yuqoridagi vazifani
if-else
yordamida qiling va natijani ham foydalanuvchiga tushunarli ko'rinishda chiqaring.
JAVOBLAR
Javoblar bizning GitHub sahifamizda hamda quyidagi Repl.it portalida mavjud.
Last updated