- Lüğət yaratmaq və qiymətə açar vasitəsilə müraciət etmək
- Cüt əlavə etmək, dəyişmək və silmək,
get()ilə təhlükəsiz oxumaq items()ilə lüğət üzərində dövr qurmaq və lüğətlə tezlik saymaq
Telefonundakı kontaktları düşün: «Ana» adını axtarırsan və nömrəni dərhal görürsən — kontaktın siyahıda neçənci olduğunu bilmək lazım deyil. Adi lüğətdə də belədir: sözü tapırsan, yanında mənası yazılıb. Python-da bu cür məlumat lüğət (dict) ilə saxlanılır: hər qiymətin öz açarı var.
Lüğət yaratmaq
Fiqurlu mötərizədə {} yazılan açar: qiymət cütləri toplusu. Qiymət indekslə deyil, açarla tapılır: student['name'].
student = {'name': 'Leyla', 'age': 14, 'city': 'Ganja'}
print(student)
print(student['name'])
print(len(student))
print(student.get('email'))
print(student.get('email', 'no email'))▸ Gözlənilən nəticə
{'name': 'Leyla', 'age': 14, 'city': 'Ganja'}
Leyla
3
None
no emailLüğətdə olmayan açarı student['email'] kimi oxusan, Python KeyError xətası verəcək. get() metodu isə xəta vermir: açar yoxdursa, None (Python-da «heç nə» mənasını verən xüsusi qiymət) və ya ikinci arqument kimi verdiyin qiyməti qaytarır.
Lüğəti dəyişmək
Yeni cüt əlavə etmək və mövcud qiyməti dəyişmək eyni cür yazılır: student['age'] = 15. Açar varsa, qiymət yenilənir; yoxdursa, yeni cüt yaranır. del cütü silir, in isə açarın lüğətdə olub-olmadığını yoxlayır.
student = {'name': 'Leyla', 'age': 14}
student['age'] = 15
student['grade'] = 9
print(student)
del student['grade']
print('grade' in student, 'name' in student)▸ Gözlənilən nəticə
{'name': 'Leyla', 'age': 15, 'grade': 9}
False TrueLüğət üzərində dövr
keys() bütün açarları, values() bütün qiymətləri, items() isə (açar, qiymət) cütlərini verir. items() ilə dövrdə hər cütü dərhal iki dəyişənə açmaq olar — kortejlər dərsindəki kimi.
prices = {'bread': 0.8, 'milk': 1.9, 'cheese': 6.5}
for item, price in prices.items():
print(f'{item}: {price:.2f} AZN')
print('Items:', list(prices.keys()))
print(f'Total: {sum(prices.values()):.2f} AZN')▸ Gözlənilən nəticə
bread: 0.80 AZN milk: 1.90 AZN cheese: 6.50 AZN Items: ['bread', 'milk', 'cheese'] Total: 9.20 AZN
Lüğətlə saymaq
Lüğətlərin ən faydalı tətbiqlərindən biri nəyinsə neçə dəfə göründüyünü saymaqdır. Hər söz üçün counts.get(word, 0) + 1 yazırıq: söz ilk dəfə görünəndə get 0 qaytarır, sonrakı dəfələrdə isə köhnə saya 1 əlavə olunur.
text = 'the cat and the dog and the bird'
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1
print(counts)
print('the:', counts['the'])▸ Gözlənilən nəticə
{'the': 3, 'cat': 1, 'and': 2, 'dog': 1, 'bird': 1}
the: 3İç-içə strukturlar
Lüğətin qiyməti istənilən tip ola bilər — məsələn, siyahı. Belə quruluşla elektron jurnal düzəltmək olar: açar şagirdin adı, qiymət isə onun qiymətləri siyahısıdır.
journal = {
'Aysel': [5, 4, 5],
'Murad': [4, 3, 4],
'Nigar': [5, 5, 5],
}
for name, grades in journal.items():
avg = sum(grades) / len(grades)
print(f'{name}: {avg:.1f}')
journal['Murad'].append(5)
print(journal['Murad'])▸ Gözlənilən nəticə
Aysel: 4.7 Murad: 3.7 Nigar: 5.0 [4, 3, 4, 5]
Lüğət xüsusilə bu hallarda əlverişlidir:
- qiyməti ad və ya kod üzrə tez tapmaq: kontaktlar, məhsulların qiymətləri;
- saymaq: sözlərin, səslərin, qiymətlərin tezliyi;
- qruplaşdırmaq: hər sinfə öz şagird siyahısı;
- bir şeyin xassələrini təsvir etmək: ad, yaş, şəhər.
import json
student = {'name': 'Leyla', 'age': 14, 'city': 'Ganja'}
text = json.dumps(student)
print(text)
back = json.loads(text)
print(back['city'])▸ Gözlənilən nəticə
{"name": "Leyla", "age": 14, "city": "Ganja"}
Ganjaprices lüğətinə 'tea' açarını 3.2 qiyməti ilə əlavə et, çörəyin ('bread') qiymətini isə 1.0-a dəyiş. Sonra .items() ilə hər məhsulu apple: 1.50 şəklində, sonda isə Total: sözü ilə bütün qiymətlərin cəmini çap et (qiymətlər nöqtədən sonra iki rəqəmlə).
prices = {'apple': 1.5, 'bread': 0.8, 'milk': 1.9}
# 1) add tea for 3.2 and change bread to 1.0
# 2) print each item like: apple: 1.50
# 3) print Total: and the sum of all prices▸ Gözlənilən nəticə
apple: 1.50 bread: 1.00 milk: 1.90 tea: 3.20 Total: 7.60
Sinifdə sevimli yemək üçün səsvermə keçirilib. Lüğət və .get() ilə hər yeməyin neçə səs aldığını say və yeməkləri əlifba sırası ilə dolma: 2 şəklində çap et. Sonda Winner: sözündən sonra ən çox səs toplayan yeməyin adını çap et.
votes = ['plov', 'dolma', 'plov', 'kebab', 'dolma', 'plov']
counts = {}
# 1) count the votes for each dish
# 2) print the dishes in alphabetical order like: dolma: 2
# 3) print Winner: and the dish with the most votes▸ Gözlənilən nəticə
dolma: 2 kebab: 1 plov: 3 Winner: plov
Əsas fikirlər
- Lüğət
{}içindəaçar: qiymətcütləridir; qiymət açarla tapılır. d[key] = valuecüt əlavə edir və ya qiyməti yeniləyir,del d[key]cütü silir.get()olmayan açarda xəta vermir,Nonevə ya verilən ehtiyat qiyməti qaytarır.items()ilə dövr hər addımda açarı və qiyməti birlikdə verir.- Açarlar təkrarsız və dəyişməyən tipdə olmalıdır.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
d = {'a': 1, 'b': 2} olarsa, d['b'] nədir?