#15 LUG'AT ELEMENTLARI BILAN ISHLASH
Lug'at ichida ro'yxat, lug'at ichida lug'at?
Last updated
Lug'at ichida ro'yxat, lug'at ichida lug'at?
Last updated
Avvalgi darsimizda lug'at bilan tanishdik, va lug'atdagi elementlarga kalit so'z bo'yicha murojat qilishni o'rgandik. Lug'atlar katta yoki kichik bo'lishi mumkin. Ba'zida lug'atdagi barcha kalitlarni yoki qiymatlarni bilmasligimiz mumkin. Bunday holatda qanday yo'l tutamiz?
Ushbu darsimizda lug'at elementlarini turli usullar yordamida chiqarishni o'rganamiz.
.items()
METODIUshbu metod yordamida lug'at ichidagi barcha kalit-qiymat juftliklarini ko'rishimiz mumkin.
Natija: dict_items([('ism', 'alijon'), ('familiya', 'shamshiyev'), ('yosh', 22), ('fakultet', 'matematika'), ('kurs', 4)])
Bu metodni to'g'ridan-to'g'ri emas, for tsikli yordamida chaqirish orqali lug'atdagi barcha elementlarni tushunarliroq shaklda ko'rishimiz mumkin.
Yuoqirdagi kodda, talaba_0
lug'atidagi har bir kalit va qiymat juftligini konslga chiqardik. E'tibor bering, for
tsiklida biz bir emas ikkita o'zgaruvchi yaratib oldik (kalit
va qiymat
).
Bu usul ba'zi lug'atlardagi ma'lumotlarni chiroyli ko'rinishda chiqarish uchun juda qo'l keladi.
.keys()
METODIAgar lug'atdagi kalit so'zlarni ko'rish talab qilinsa, .keys() metodidan foydalanishimiz mumkin.
Natija: dict_keys(['olma', 'anor', 'uzum', 'anjir', 'shaftoli'])
Yuqoridagi kodimizda, for
tsiklida .keys()
metodini ishlatmasak ham huddi shu natija chiqadi.
for
tsikli va if
sharti yordamida lug'atdagi biror qiymatlarni alohida chiqarishimiz ham mumkin:
Yuqordagi kodga e'tibor bering. Biz avval borolik
degan ro'yxat yaratdik (uyga bozor qilyapmiz), keyin esa mahsulotlar
lug'atidagi har bir mahsulotni bizdagi bozorlik
ro'yxati bilan solishtirdik. Agar mahsulot bizning bozorlik
ro'yxatimizda bo'lsa, uning narhini konsolga chiqardik.
Quyidagi misolda esa aksincha, bozorlik ro'yxatidagi har bir elementni do'kondagi mahsulotlar bilan solishtiramiz, va mahsulot do'konda yo'q bo'lsa, do'konga murojat qoldiramiz:
Pythonda lug'at elementlari siz (foydalanuvchi) kiritgan tartibda saqlanadi. Agar lug'at elementlarini alifbo bo'yicha chiqarish talab qilinsa, sorted() funktsiyasidan foydalanamiz.
.values()
METODIAgar lug'atdagi qiymatlarni chiqarish talab qilinsa .values() metodidan foydalanishimiz mumkin.
Natija: dict_values(['iphone x', 'galaxy s9', 'mi 10 pro', 'nokia 3310']
Yuqoridagi usul bilan qiymatlarni chiqrganimizda, lug'atdagi barcha qiymatlar chiqib keladi. Agar, biror qiymat ko'p marta qaytarilsa, konsolga ham ko'p marta chiqib keladi.
Quyidagi misloni ko'raylik:
Yuoqirdagi natijaga e'tibor bersanigz, bir nechta foydalanuvchilar iphone x va galaxy s9 telefonidan foydalanishar ekan, va bu modellar qayta-qayta konsolga chiqdi.
Buning oldini olish uchun set()
funktsiyasidan foydalanishimiz mumkin.
Pythonda set
yana bir ma'lumot turi bo'lib, ro'yxat va lug'at kabi bir nechta elementlarni saqlashga mo'ljallangan. Lug'at va ro'yxatdan farqli ravishda, set ichidagi elementlar biror tartibda saqlanmaydi, va ularga indeks orqali murojat qilib bo'lmaydi. Shuningdek, set ichida bir hil elementlar bo'lmaydi.
Python izohli lug'atini yarating va lug'atga kamida 10 ta so'z qo'shing. Lug'atdagi har bir kalit va qiymatni for tsikli yordamida, alifbo ketma-ketligida chiroyli qilib konsolga chiqaring.
Davlatlar va ularning poytaxtlari lug'atini tuzing. Avval lug'atdagi davlatlarni, keyin poytaxtlarni alohida-alohida, alifbo ketma-ketligida konsolga chiqaring.
Foydalanuvchidan istalgan davlatni kiritishni so'rang va shu davlatning poytaxtini konsolga chiqaring. Agar foydalanuvchi lug'atda yo'q davlatni kiritsa, "Bizda bunday ma'lumot yo'q" degan xabarni chiqaring.
Restoran menusi lug'atini tuzing (kamida 10 ta taom-narh juftligini kiriting). Foydalanuvchidan 3 ta ovqat buyurtma berishni so'rang. Foydalanuvchi kiritgan taomlarni menu bilan solishtiring, agar taom menuda bo'lsa narhini ko'rsating, aks holda "bizda bunday taom yo'q" degan xabarni chiqaring.
JAvoblarni GitHub repositoryda yoki Repl.it sahifamizda ko'rishingiz mumkin.