3. Python : Dictionary

Narmin Aliyeva
Pragmatech
Published in
5 min readSep 3, 2020

Salam, Dostlar,

Bu günkü məqaləmin mövzusu Python’da Dictionary haqqında olacaq. Keçən dəfə listtuple haqqında danışmışdıq. Dictionary’a keçməzdən əvvəl gəlin baxaq ki, dictionary’ni digərlərindən fərqləndirən nədir?

Dictionary:

  • Mutable (dəyişdirilə bilən)’dır.
  • Sıralanmır.
  • Elementlər Curly brackets (bəzəkli mötərizələr) “{}” içərisində yazılır.
  • İki hissədən ibarətdir : key(açar) və value(dəyər)

Niyə dictionary istifadə edirik?

Dictionary’dən danışmadan öncə nə üçün istifadə etdiyimizi danışaq. Təsəvvür edin ki, verilənlər bazası olmadan Python’da sadə bir İngilis dili lüğəti yaratmaq istəyirik. Necə edərik? Gərək hər söz üçün bir if şərtindən istifadə edək. Bu isə çox yorucu olacaq. Baxaq:

soz = input("İngiliscə sözü daxil edin:")if (soz == "Computer") :
print("Kompüter")
elif (soz == "Keyboard") :
print("Klaviatura")
elif (soz == "Memory") :
print("Yaddaş")
elif (soz == "Output") :
print("Çıxış")
elif (soz == "Monitor") :
print("Ekran")
.
.
.

Böyük ehtimalla əksəriyyətimiz bu şəkildə yazacaqdıq. O zaman gəlin bir də bunu dictionary üzərində görək:

soz = input("İngiliscə sözü daxil edin:")luget = {
"Computer" : "Kompüter",
"Keyboard" : "Keyboard",
"Memory" : "Memory",
"Output" : "Output",
"Monitor" : "Monitor"
}
.
.
.

Gördüyümüz kimi kodu bu şəkildə yazdığımız zaman kod daha anlaşıqlı və səliqəli olur. Digər tərəfdən dictionary mutable(dəyişdirilə bilən) olduğundan biz onun üzərində element silmə, əlavə etmə, dəyişdirmə və bu kimi bir çox əməlləri icra edə bilərik.

Gəlin dictionary yazılışına daha dəqiq baxaq:

d = {
<key>: <value>,
<key>: <value>,
.
.
.
<key>: <value>
}

Yuxarıda qeyd etdiyim kimi dictionary elementləri {} (curly brackets) içərisində yazılır və iki hissədən ibarət olur (key — açar və ona uyğun verilən value — dəyər).Hər bir key və value bir-birindən : (colon) ilə ayrılır. Bununla yanaşı built-in dict() funksiyasından istifadə edərək də dictionary yaratmaq olur.

# boş dictionary
my_dict = {}

# açar sözü integer olan dictionary
my_dict = {1: 'bir', 2: 'iki'}
# key: value
# açar sözü string və integer istifadə olunan dictionary
my_dict = {'ad': 'Nərmin', 1: [2, 4, 3]}
# key: value
# dict() funksiyası ilə yaradılan dictionary
my_dict = dict({1:'bir', 2:'iki'})

my_dict = dict([(1,'bir'), (2,'iki')])
# Output : {1: 'bir', 2: 'iki'}

Qeyd etmək lazımdır ki, value istənilən məlumat növündə olub təkrarlana bildiyi halda, key isə immutable növdə(string, number) olan elementlərdən yarananır və təkrarlana bilmir.

Dictonary daxilindəki elementlərə necə çata bilərik?

Əvvəldə də qeyd etdiyim kimi, dictionary’də sıra anlayışı olmadığından biz ədədlərdən istifadə edərək indeksləmə edə bilmirik. Bunun əvəzində [] içərisində dictionary’nin key hissəsini yazaraq istədiyimiz dəyərə çatırıq. Əgər ki qeyd etdiyimiz key(açar) dictionary’də olmazsa bu zaman KeyError qaytarır.

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva'}

print(my_dict['ad']) # Output: Nərmin

print(my_dict['yaş'])
# Output:
# Traceback (most recent call last):
# File "<string>", line 7, in <module>
# print(my_dict['yaş'])
# KeyError: 'yaş'

Yaxşı, bildirdik ki ədədlərdən istifadə edərək dictionary içərisindəki elementlərə çata bilmirik :

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva'}
print(my_dict[1])
# Output:
# Traceback (most recent call last):
# File "<string>", line 2, in <module>
# print(my_dict[1])
# KeyError: 1

Və bunun doğruluğunu yuxarıdakı misalda da gördük. Ancaq biz digər tərəfdən də bildirmişdik ki, key immutable növdə(string, number) hətta immutable olan tuple’dan da ibarət olan elementlərdən yarana bilər.

O zaman bu nə ifadə edir?

my_dict = {0: 'sıfır', 1: 'bir', 2: 'iki', 3: 'üç'}print(my_dict)     # Output: {0:'sıfır', 1:'bir', 2:'iki', 3:'üç'}print(my_dict[0])      # Output: 'sıfır'print(my_dict[1])       # Output: 'bir'

Yəqin ki, ilk baxışdan düşünərik ki, kvadrat mötərizə [] içərisində yazılan 0 və 1 indeks rolunu oynayır. Lakin bu heç də belə deyil. Python bunları dictionary key(açar) olaraq qəbul edir. Bunu daha da aydın anlamağımız üçün gəlin dictionary içərisində olan elementləri tərsindən yazaq :

my_dict = {3: 'üç', 2: 'iki', 1: 'bir', 0: 'sıfır'}print(my_dict)     # Output: {3:'üç', 2:'iki', 1:'bir', 0:'sıfır'}print(my_dict[0])      # Output: 'sıfır'print(my_dict[1])       # Output: 'bir'

Artıq yuxarıda qeyd olunan kodda da açıq şəkildə görürük ki, biz qeyd olunan açar sözlərdə istifadə edərək ele eyni dəyərləri aldırıq.

Dictionary’ə element əlavə etmək və dəyişmək:

Dictionary mutable(dəyişdirilə bilən) olduğundan, rahatlıqla elementləri əlavə edə ,həmçinin, dəyişə bilərik. Lakin listlərdən fərqli olaraq, əlavə etmə metodlarından (insert(), append()) istifadə etməyəcəyik. Kvadrat mötərizələr içərisində əlavə etmək istədiyimiz dəyərin açar sözünü yazaraq onu əlavə edə bilərik:

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva'}

my_dict['yaş'] = 19
print(my_dict)
# Output: {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19' }

Əgər əlavə etmək istədiyimiz elementin açar sözü (key) dictionary’da artıq mövcuddursa, o zaman açar sözə verəcəyimiz dəyər yenilənərək dictionary’ə əlavə olunur.

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19'}

my_dict['yaş'] = 20
print(my_dict)
# Output: {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '20' }

Bunun səbəbi isə dictionary’də olan elementlərin açar sözlərinin təkrarlana bilməməsindən irəli gəlir. Lakin açar sözdən fərqli olaraq, biz müxtəlif açar sözlü elementlərə eyni dəyəri verə bilərik. Bilirəm biraz çaşdırıcıdı.

Ən yaxşısı gəlin misala baxaq:

my_dict = {0: 'a', 1: 'a', 2: 'a', 3: 'a'}print(my_dict)     
# Output: {0:'a', 1:'a', 2:'a', 3:'a'}
print(my_dict[0] == my_dict[1] == my_dict[2] == my_dict[3] )
# Output: True

Dictionary’dən element silmək:

Listlərdə olduğu kimi dictionary’də də element silmək üçün pop(key) və popitem() metodundan istifadə olunur. Bu zaman silinəcək olan elementin açar(key) hissəsini qeyd edirik və pop() metodu həmin elementin həm dəyərini qaytarır, həm də silir. Lakin popitem() metodu isə özü təsədüfi elementi silir və qaytarır. Elə pop() və popitem() metodunu digərlərindən fərqləndirən də onun sildiyi elementi qaytarmasıdır.

# pop(key) metodu
my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19'}
print(my_dict.pop('yaş')) # Output: 19print(my_dict) # Output: {'ad': 'Nərmin', 'soyad' : 'Əliyeva'}
# popitem() metodu
my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19'}
print(my_dict.popitem()) # Output: ('yaş', '19')print(my_dict) # Output: {'ad': 'Nərmin', 'soyad' : 'Əliyeva'}

Əgər ki bir dəfədə dictionary elementlərinin hamısını silmək istəyiriksə, bu zaman clear() metodundan istifadə olunur.

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19'}my_dict.clear()
print(my_dict) # Output: {}

Həmçinin, del — dən istifadə edərək bütöv dictionary’ni tamamilə silmək mümkündür.

my_dict = {'ad': 'Nərmin', 'soyad' : 'Əliyeva', 'yaş' : '19'}del my_dict
print(my_dict)
# Output:
# Traceback (most recent call last):
# File "main.py", line 3, in <module>
# print(my_dict)
# NameError: name 'my_dict' is not defined

Bu dəfəki yazımın sonuna gəldik. Bir növbəti məqaləmdə dictionary metodları haqqında danışacağıq. Əgər əksik yada yanlış olduğunu düşündüyünüz yaxud anlamadığınız birşey olarsa “Responses” hissəsində yaza bilərsiniz.

Xoş mütaliələr.

Mənbələr:

https://www.programiz.com/python-programming/dictionary

https://www.mobilhanem.com/python-dictionarysozluk-ve-metotlari/

https://realpython.com/python-dicts/

https://caylakyazilimci.com/post/dictionaries-python-101-9

--

--