Similar presentations:
Nesting. Jonibekdeveloper
1.
JonibekDeveloperjonibekuralov
jon1bek_uralov
jon1bek
2.
NESTINGNESTING
Ba'zida dasturlash jarayonida lug'atning ichida ro'yxatlar yoki
boshqa lug'atni, yoki aksincha ro'yxat ichida lug'atni saqlash
ham qo'l kelishi mumkin. Bu ingliz tilida Nesting deyiladi.
Nesting Pythondagi foydali xususiyatlardan biri.
3.
LUG'ATLAR RO'YXATIBiz avvalgi darsimizda talabalarning ma'lumotlarini lug'at shaklida
saqlashni ko'rgan edik. Shunday talabalardan yuzlab bo'lganda,
ularning har biriga alohida lug'at qilishimiz tabiiy, lekin bu lug'atlar
bilan ishlash qiyinchilik tug'dirishi mumkin. Shunday xolatda barcha
lug'atlarni (talabalarni) bitta ro'yxatga joylab, ular ustida turli amallar
bajarish mumkin.
4.
LUG'ATLAR RO'YXATIcar0 = {
'model':'lacetti',
'rang':'oq',
'yil':2018,
'narh':13000,
'km':50000,
'korobka':'avtomat'
}
car1 = {
'model':'nexia 3',
'rang':'qora',
'yil':2015,
'narh':9000,
'km':89000,
'korobka':'mexanika'
}
car2 = {
'model':'gentra',
'rang':'qizil',
'yil':2019,
'narh':15000,
'km':20000,
'korobka':'mexanika'
}
Agar biz har bir lug'atga alohida
murojat qiladigan bo'lsak,
lug'atlarning nomlarini yodlab
qolishimiz talab qilinar edi:
5.
LUG'ATLAR RO'YXATIcar = car0
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
car = car1
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
car = car2
print(f"{car['model'].title()},\
{car['rang']} rang,\
{car['yil']}-yil, {car['narh']}$")
6.
LUG'ATLAR RO'YXATIBarcha avtolarni bitta ro'yxatga joylaymiz, va for tsikli yordamida
birma-bir konsolga chiqaramiz:
cars = [car0, car1, car2]
for car in cars:
print(f"{car['model'].title()}, "
f"{car['rang']} rang, "
f"{car['yil']}-yil, {car['narh']}$")
E'tibor bering, ishimiz bir muncha yengillashdi, kodimiz ham
qisqardi. Natija esa bir hil.
7.
LUG'ATLAR RO'YXATIEndi biz ro'yxat ichidagi istalgan lug'atga indeks bo'yicha murojat
qilaveramiz (lug'at nomini yodlab qolish shart emas).
print(cars[0])
Biror lug'atdagi elementga murojat qilish uchun esa quyidagi usuldan
foydalanishimiz mumkin:
print(cars[0]['model'])
print(f"{cars[2]['rang'].title()} "
f"{cars[2]['model']}")
8.
LUG'ATLAR RO'YXATIfor tsikli yordamida biz bo'sh lug'atlar ro'yxatini ham yaratib olishimiz
mumkin:
malibus=[] # Malibu mashinalari uchun bo'sh ro'yxat yaratdik
for n in range(10):
new_car = { # har bir yangi mashina uchun lug'at yaratamiz
'model':'malibu',
'rang':None, # rangi noaniq
'yil':2020,
'narh':None, # narhi belgilanmagan
'km':0,
'korobka':'avto'
}
malibus.append(new_car) # yangi lug'atni ro'yxatga qo'shamiz
9.
LUG'ATLAR RO'YXATIYuqoridagi misloda biz 10 ta Malibu mashinasidan iborat ro'yxat
tuzdik. E'tibor qiling, 'rang' kalitiga qiymat bermadik va None deb
qoldirdik. Endi ishlab chiqarish jarayonida mashinalarga turli ranglarni
berishimiz mumkin. Misol uchun birinchi 3 ta mashinaga qizil rang
beramiz:
for malibu in malibus[:3]:
malibu['rang']='qizil'
Keyingi 3 tasiga esa qora:
for malibu in malibus[3:6]:
malibu['rang']='qora'
10.
LUG'ATLAR RO'YXATIOxirgi 4 ta avtoni qora, lekin korobkasini mexanika qilamiz:
for malibu in malibus[6:]: # ohirgi 4 ta mashinani
malibu['rang']='qora' # rangi qora
malibu['korobka']='mexanika' # korobkasi mexanika
Endi, mashinalarning korobkasidan chiqqan holda narh belgilaymiz:
for malibu in malibus:
if malibu['korobka']=='avto':
malibu['narh']=40000
else:
malibu['narh']=35000
11.
LUG'AT ICHIDA RO'YXATBir kalitga bir nechta qiymatlar berish talab qilinganda,
qiymatlarni ro'yxat ko'rinishida yozish o'rinlidir. Misol uchun, bir
tashkilotda bir nechta dasturchilar ishlaydi va har bir dasturchi
turli dasturlash tillarini biladi. Keling dasturchilar lug'atini tuzamiz
va har bir dasturchi haqidagi ma'umotni konsolga chiqaramiz:
12.
LUG'AT ICHIDA RO'YXATdasturchilar = {
'ali':['python','c++'],
'vali':['html','css','js'],
'hasan':['php','sql'],
'husan':['python','php'],
'maryam':['c++','c#']
}
for ism, tillar in dasturchilar.items():
print(f"\n{ism.title()} quyidagi dasturlash
tillarini biladi:")
for til in tillar:
print(til.upper())
13.
LUG'AT ICHIDA RO'YXATPythondagi print() funktsiyasi har bir matndan so'ng yangi qator
tashlaydi. Buning oldini olish uchun quyidagi usuldan foydalanish
mumkin: print(string, end = '')
for ism, tillar in dasturchilar.items():
print(f"\n{ism.title()} quyidagi dasturlash
tillarini biladi:", end='')
for til in tillar:
print(f'{til.upper()} ', end='')
14.
LUG'AT ICHIDA LUG'ATBunday qilish tavsiya etilmasada, istisno holatlarda lug'at
ichidagi qiymatlarni lug'at ko'rinishida ham saqlash mumkin.
Misol uchun, ish joyingizdagi hamkasblaringiz haqidagi
ma'lumotlarni saqlashda, hamkasbingizning ismi kalit, u
haqidagi ma'lumotlarni esa lug'at ko'rinishida berilishi
mumkin.
15.
LUG'AT ICHIDA LUG'AThamkasblar = {
'ali':{'familiya':'valiyev',
'tyil':1995,
'malumot':'oliy',
'tillar':['python','c++']
},
'vali':{'familiya':'aliyev',
'tyil':2001,
'malumot':"o'rta-maxsus",
'tillar':['html', 'css', 'js']},
'hasan':{'familiya':'husanov',
'tyil':1999,
'malumot':'maxsus',
'tillar':['python','php']}
}
16.
LUG'AT ICHIDA LUG'ATHamkasblar to'g'risidagi ma'lumotlarni esa quyidagicha ko'rish
mumkin:
for ism, info in hamkasblar.items():
print(f"\n{ism.title()}
{info['familiya'].title()}, "
f"{info['tyil']}-yilda tug'ilgan. "
f"Ma'lumoti: {info['malumot']}. \n"
"Quyidagi dasturlash tillarini biladi:")
for til in info['tillar']:
print(til.upper())
Lug'at ichidagi lug'atlar bir hil tuzilishga ega bo'lgani ishingizni
ancha yengillashtiradi, aks holda kodingiz murakkablashib ketishi
mumkin.
17.
JonibekDeveloperjonibekuralov
jon1bek_uralov
jon1bek