Bu bölmədə bir lüğətə yeni elementlər necə əlavə ediləcəyi (dikt tipli obyekt) və ya Python’da mövcud bir elementin dəyərinin necə yenilədiyi izah olunur. Çoxlu lüğətləri birləşdirmək (qoşmaq, birləşdirmək) də mümkündür.
- Düymələri göstərərək lüğətə elementlər əlavə edin və yeniləyin.
- Çoxlu lüğətlərin birləşməsi (birləşməsi): update (), | operator, | = operator
- Birdən çox element əlavə edin və ya yeniləyin: update (), | = operator
Düymələri göstərərək lüğətə elementlər əlavə edin və yeniləyin.
Lüğət elementlərini aşağıdakı şəkildə əlavə edə / yeniləyə bilərsiniz.
Lüğət obyekti [açar] = dəyər
Mövcud olmayan bir düymə göstərildikdə, yeni bir element əlavə edilir və mövcud bir düymə göstərildikdə, mövcud dəyər yenilənir (yazılır).
d = {'k1': 1, 'k2': 2}
d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}
d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}
Mövcud bir açarın dəyərini yeniləmək istəmirsinizsə, setdefault () metodundan istifadə edin.
Çoxlu lüğətləri birləşdirin (birləşdirin): yeniləmə (), | operator, | = operator
update()
Başqa bir lüğət obyekti lüğət obyektinin metod yeniləməsinin () arqumenti kimi göstərilsə, bütün elementləri əlavə ediləcəkdir.
Düymə mövcud düymə ilə üst-üstə düşərsə, arqumentdə göstərilən lüğətin üstünə yazılacaqdır.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Yeniləmə () mübahisəsində birdən çox lüğətin göstərilməsi səhvdir.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2
Daha sonra izah edildiyi kimi update () yeni elementləri açar söz arqumentləri kimi əlavə edə bilər (key = dəyər), buna görə lüğətə ** əlavə edin və hər elementi açar söz arqumenti kimi genişləndirin və ötürün.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Əvvəlki nümunələrdə olduğu kimi yeniləmə () istifadə edərək orijinal lüğət obyektini yeniləyəcəkdir.
Çoxlu lüğətləri birləşdirərək yeni bir lüğət yaratmaq istəyirsinizsə, {** d1, ** d2} (Python 3.5-dən) və ya dict (** d1, ** d2) istifadə edin.
Python 3.9 və sonrakı versiyasında |. İstifadə edərək yeni bir lüğət yaratmaq da mümkündür operator sonrakı təsvir.
| operator, | = operator (Python 3.9 və sonrası)
Python 3.9 olduğundan, | istifadə edərək iki lüğəti birləşdirmək mümkündür operator. İki lüğət eyni açara sahib olduqda, sağdakı üstünlük prioritetə malikdir.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}
| Bir sıra operatorlardan istifadə etməklə birdən çox lüğəti birləşdirmək də mümkündür.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
+ Yeniləmə () ilə olduğu kimi, sol tərəfdəki obyekt də yenilənir.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Birdən çox element əlavə edin və ya yeniləyin: update (), | = operator
update()
Yeniləmə () metodunda açar söz mübahisə açarı = dəyər göstərildikdə, açar açar və dəyər dəyəri əlavə ediləcəkdir. Açar mövcud bir düymə ilə üst-üstə düşərsə, arqumentdə göstərilən dəyərin üzərinə yazılacaqdır.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Yeniləmə () metoduna arqument olaraq (açar, dəyər) siyahısını da göstərmək mümkündür. Açar mövcud bir düymə ilə üst-üstə düşərsə, arqument olaraq göstərilən dəyərin üzərinə yazılacaqdır.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Zip () funksiyası ilə birlikdə düymələr siyahısından və dəyərlər siyahısından elementlər əlavə edilə bilər.
d = {'k1': 1, 'k2': 2}
keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]
d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
| = operator (Python 3.9 və sonrası)
| = Operatoru ilə sağ tərəfdə (açar, dəyər) siyahısı müəyyən edilə bilər.
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
| İlə bir siyahının göstərilməsinə diqqət yetirin operator səhvlə nəticələnəcəkdir. Yalnız lüğətdən lüğətə əməliyyatlar dəstəklənir.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'