python.sariq.dev
Search…
#15 LUG'AT ELEMENTLARI BILAN ISHLASH
Lug'at ichida ro'yxat, lug'at ichida lug'at?
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() METODI

Ushbu metod yordamida lug'at ichidagi barcha kalit-qiymat juftliklarini ko'rishimiz mumkin.
1
talaba_0 = {
2
'ism':'alijon',
3
'familiya':'shamshiyev',
4
'yosh':22,
5
'fakultet':'matematika',
6
'kurs':4
7
}
8
​
9
print(talaba_0.items())
Copied!
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.
1
for kalit, qiymat in talaba_0.items():
2
print(f"Kalit: {kalit}")
3
print(f"Qiymat: {qiymat} \n")
Copied!
Natija
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.
1
telefonlar = {
2
'ali':'iphone x',
3
'vali':'galaxy s9',
4
'olim':'mi 10 pro',
5
'orif':'nokia 3310'
6
}
7
​
8
for k, q in telefonlar.items():
9
print(f"{k.title()}ning telefoni {q}")
Copied!
Natija

.keys() METODI

Agar lug'atdagi kalit so'zlarni ko'rish talab qilinsa, .keys() metodidan foydalanishimiz mumkin.
1
mahsulotlar = { # Do'kondagi mahsulotlar
2
'olma':10000,
3
'anor':20000,
4
'uzum':40000,
5
'anjir':25000,
6
'shaftoli':30000
7
}
8
​
9
print(mahsulotlar.keys())
Copied!
Natija: dict_keys(['olma', 'anor', 'uzum', 'anjir', 'shaftoli'])
1
print('Do\'kondagi mahsulotlar:')
2
for mahsulot in mahsulotlar.keys():
3
print(mahsulot.title())
Copied!
Natija
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:
1
bozorlik = ['anor','uzum','non','baliq']
2
for mahsulot in mahsulotlar:
3
if mahsulot in bozorlik:
4
print(f"{mahsulot.title()} {mahsulotlar[mahsulot]} so'm")
Copied!
Natija
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:
1
for buyum in bozorlik:
2
if buyum not in mahsulotlar:
3
print(f"Iltimos, do'koningizga {buyum} ham olib keling")
Copied!
Natija

LUG'AT ELEMENTLARINI TARTIB BILAN CHIQARISH

Pythonda lug'at elementlari siz (foydalanuvchi) kiritgan tartibda saqlanadi. Agar lug'at elementlarini alifbo bo'yicha chiqarish talab qilinsa, sorted() funktsiyasidan foydalanamiz.
1
print("Do'konimizdagi mahsulotlar:")
2
for mahsulot in sorted(mahsulotlar):
3
print(mahsulot.title())
Copied!
Natija

.values() METODI

Agar lug'atdagi qiymatlarni chiqarish talab qilinsa .values() metodidan foydalanishimiz mumkin.
1
print(telefonlar.values())
Copied!
Natija: dict_values(['iphone x', 'galaxy s9', 'mi 10 pro', 'nokia 3310']
1
print('Foydalanuvchilar quyidagi telefonlarni ishlatishadi:')
2
for tel in telefonlar.values():
3
print(tel)
Copied!
Natija
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:
1
telefonlar = {
2
'ali':'iphone x',
3
'vali':'galaxy s9',
4
'olim':'mi 10 pro',
5
'orif':'nokia 3310',
6
'hamida':'galaxy s9',
7
'maryam':'huawei p30',
8
'tohir':'iphone x',
9
'umar':'iphone x'
10
}
11
​
12
print('Foydalanuvchilar quyidagi telefonlarni ishlatishadi:')
13
for tel in telefonlar.values():
14
print(tel)
Copied!
Natija
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.
1
print('Foydalanuvchilar quyidagi telefonlarni ishlatishadi:')
2
for tel in set(telefonlar.values()):
3
print(tel)
Copied!
Natija
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.

AMALIYOT

  • 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.
Kutilgan natijaga misol
  • Davlatlar va ularning poytaxtlari lug'atini tuzing. Avval lug'atdagi davlatlarni, keyin poytaxtlarni alohida-alohida, alifbo ketma-ketligida konsolga chiqaring.
Kutilgan natijaga misol
  • 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.
Kutilgan natijaga misol
  • 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.
Kutilgan natijaga misol

JAVOBLAR

JAvoblarni GitHub repositoryda yoki Repl.it sahifamizda ko'rishingiz mumkin.

GitHub

GitHub - anvarnarz/python-darslar: Dasturlash asoslari darslari
GitHub

Repl.it

​
Last modified 1yr ago