Python’da sözlükler, bir değeri almak için anahtar kullanan veri depolama nesneleridir. Cep telefonunuzun kişi listesini veya telefon rehberinizi düşünün. Kişinin adını, anahtarını ve telefon numarasını arıyoruz. Sözlükler, verileri saklarken ve sıralarken inanılmaz derecede faydalıdır. Sözlük kullandık döngü projesi için Bir web sayfasında içerik oluşturmak için RSS haber akışlarının kullanıldığı görüldü.
Bir sözlük içindeki anahtarları ve değerleri nasıl oluşturacağımızı, güncelleyeceğimizi ve sileceğimizi inceleyeceğiz ve ardından Python’u kullanarak bir bildirim sistemi oluşturduğumuz gerçek dünya projesinde bir sözlüğü kullanacağız. nfty.sh.
Sözlüklerin Python’da nasıl kullanılacağını göstermek için ücretsiz, kullanımı kolay ve platformlar arası bir Python editörü olan Thonny’yi kullanacağız.
1. Bir tarayıcıda Thonny web sitesine gidin ve sürümü indir sisteminiz için.
2. Alternatif olarak resmi Python sürümünü yükleyin bu kılavuzu kullanarak. Bu kılavuzun Windows 10 ve 11’deki kurulumu kapsadığını unutmayın.
Python’da Sözlük Nasıl Oluşturulur
Bir sözlüğün en temel kullanımı veri depolamaktır, bu örnekte “kayıt” adlı bir sözlük oluşturacağız ve içinde Star Trek’teki karakterlerin adlarını (anahtarlarını) ve yıldız gemisi kayıtlarını / sayılarını (değerlerini) depolayacağız.
1. “Kayıt defteri” adında boş bir sözlük oluşturun. Sözlükler zaten içindeki verilerle oluşturulabilir, ancak boş bir sözlük oluşturduğumuzda başlangıç için “boş bir tuvale” sahip oluruz.
registry =
2. Kayıt defterine bir ad ve gemi numarası ekleyin. Adın bir anahtar, gemi numarasının ise değer olduğunu unutmayın. Değerler dizeler, tamsayılar, kayan noktalı sayılar, tuple’lar ve listeler olabilir.
registry["James T Kirk"] = 1701
3. Kayıt defterine birkaç ad daha ekleyin.
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
4. Kayıt defteri sözlüğünün içeriğini yazdırın.
print(registry)
5. Kodu starfleet-registry.py olarak kaydedin ve kodu başlatmak için Çalıştır’a tıklayın.
Eksiksiz Kod Listesi: Bir Sözlük Oluşturma
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
Sözlükteki Girişleri Güncelleme ve Silme.
Sözlükler güncellenebilir (programlama tabiriyle değişebilir) ve bu, anahtarı (adları) ve değerleri (gemi numaraları) güncelleyebileceğimiz anlamına gelir.
İlk senaryomuz için, Ben Sisko’dan bir telefon aldık ve kaydının Benjamin olarak güncellenmesini istiyor. Bu kodu bir önceki örnek koda ekleyeceğiz.
1. Güncelleme yaptığımızı göstermek için bir print ifadesi ekleyin. Bu tamamen isteğe bağlıdır, ancak bu örneğin amacı doğrultusunda sözlüğü güncellediğimizi açıklığa kavuşturmaktadır.
print(“UPDATES”)
2. Bir “Benjamin Sisko” anahtarı ekleyin ve onu “Ben Sisko” altında depolanan değeri kullanacak şekilde ayarlayın.
registry["Benjamin Sisko"] = registry["Ben Sisko"]
3. “Ben Sisko”yu kayıt defterinden silin.
del registry["Ben Sisko"]
4. Kayıt defterinin geçerli içeriğini yazdırın. Artık “Ben Sisko” anahtarının kaybolduğunu, yerini “Benjamin Sisko”nun aldığını görüyoruz. Değer de aktarıldı.
print(registry)
Sonra James T Kirk için girişi güncelleyeceğiz. Görünüşe göre yeni bir gemi numarası var (“yanlışlıkla” kendi kendini yok etme uygulamasında kolay bir parola ayarlamakla ilgili) ve bu nedenle girişinin değerini güncellememiz gerekiyor.
1. Güncelleme yaptığımızı göstermek için bir print ifadesi ekleyin. Bu tamamen isteğe bağlıdır, ancak bu örneğin amacı doğrultusunda sözlüğü güncellediğimizi açıklığa kavuşturmaktadır.
print("Kirk's new number")
2. “James T Kirk” anahtarını yeni gemi numarasıyla güncelleyin. Değere -A eklediğimiz için, artık bir dize kullandığımızı belirtmek için değeri ” ” içine sarmamız gerektiğini unutmayın.
registry["James T Kirk"] = "1701-A"
3. Kayıt defterinin içeriğini yazdırın. Artık James T Kirk’ün yeni bir gemi numarasına sahip olduğunu görebiliyoruz.
Son olarak Benjamin Sisko’yu kayıt defterinden silmemiz gerekiyor. Görünüşe göre Bajor’daki yangın mağaralarında “kaybolmuş”. Bu yüzden girişini kayıt defterinden silmemiz gerekiyor. Mevcut kodu kullanacağız ve üç yeni satır ekleyeceğiz.
1. Girişleri sildiğimizi göstermek için bir print ifadesi ekleyin. Bu tamamen isteğe bağlıdır, ancak bu örnekte sözlükteki girdileri sildiğimiz açıklığa kavuşturulmuştur.
print("Deleting Benjamin Sisko")
2. “Benjamin Sisko”yu kayıt defterinden silin. Yeni kaptanın kim olacağını henüz bilmiyoruz.
del registry["Benjamin Sisko"]
3. Silme işlemini onaylamak için kayıt defterini yazdırın.
print(registry)
4. Kodu kaydedip çalıştırın.
Tam Kod Listeleme: Bir Sözlüğü Güncelleme ve Silme
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
Sözlüklerle For Döngüsü Kullanma
For döngüleri harika. Bunları bir nesneyi yinelemek ve ilerledikçe verileri almak için kullanabiliriz. İsimleri (anahtarları) tekrarlamak ve her kaptan için isim ve gemi numarasını yazdırmak için mevcut kod örneğimizden birini kullanalım.
1. Kayıt defteri sözlüğündeki anahtarlar ve değerler arasında yineleme yapmak için bir for döngüsü oluşturun. Bu döngü, sözlükteki tüm öğeler boyunca yinelenecek ve döngü her yinelendiğinde geçerli anahtarı ve değeri kaydedecektir.
for keys, values in registry.items():
2. Kaptanın adını (anahtarları) ve gemi numarasını/sicil numarasını (değerlerini) içeren bir cümle oluşturun.
print("Captain", keys, "registry is", values)
3. Kodu kaydedin ve Çalıştır’a tıklayın. Python kabuğunun alt kısmında her kaptanın adını ve gemi numarasını göreceksiniz.
Tam Kod Listeleme: Sözlüklerle For Döngüsü Kullanma
registry =
registry["James T Kirk"] = 1701
registry["Hikaru Sulu"] = 2000
registry["Kathryn Janeway"] = 74656
registry["Ben Sisko"] = 74205
print(registry)
print("UPDATES")
registry["Benjamin Sisko"] = registry["Ben Sisko"]
del registry["Ben Sisko"]
print(registry)
print("Kirk's new ship")
registry["James T Kirk"] = "1701-A"
print(registry)
print("Deleting Benjamin Sisko")
del registry["Benjamin Sisko"]
print(registry)
for keys, values in registry.items():
print("Captain", keys, "registry is", values)
Gerçek Dünya Projesinde Sözlükleri Kullanma
Temelleri öğrendik, şimdi gerçek dünya projesinde bir sözlük kullanalım. kullanacağız ntfy.sh, Android ve iOS cihazlara bildirim gönderme hizmeti. Ntfy.sh için Python API’si sözlükleri temel alır. Hepsinden iyisi, ntfy.sh’ye mesaj gönderme işlemini gerçekleştirmek için Python’un istek modülünü kullandığından Python kurulum dosyası yoktur.
1. Ntfy.sh’yi yükleyin Android / iOS cihazınız için.
2. Uygulamayı açın ve +’ya tıklayın. yeni bir abonelik oluşturmak için.
3. Yeni bir konu oluşturun ve Abone Ol’a tıklayın. Biz bu testi kullanmayı seçtik. Size özel bir konu oluşturun. Ayrıca konuların şifre korumalı olmayabileceğini unutmayın, bu nedenle hassas veriler göndermeyin.
4. Uygulamayı açık bırakın cihazınızda.
Şimdi dikkatimiz Thonny’yi çalıştıran bilgisayarımıza dönüyor.
5. Boş bir dosya oluşturun.
6. İstekler modülünü içe aktarın. Bu, ağ bağlantılarını göndermek ve almak için tasarlanmış önceden yazılmış Python kodunun bir modülüdür.
import requests
7. Ntfy’ye mesaj göndermek için istekleri kullanın. Bizim durumumuzda konu adını belirtmemiz gerektiğini unutmayın. https://ntfy.sh/th-test, işlevin argümanının bir parçası olarak. Bir sonraki argüman olan veri, kullanıcının göreceği metindir. Ancak bizim ilgimiz “başlıklar”dır çünkü bu birden fazla giriş içerebilen bir sözlüktür. Şu anda bildirim için bir başlık içeriyor.
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
8. Kodu Dictionary-ntfy.py olarak kaydedin ve Çalıştır’a tıklayın. Bu, mesajı ntfy’nin sunucularına gönderecek ve oradan bildirim cihazınızda görünecektir.
Eksiksiz Kod Listesi: Gerçek Dünya Projesi
import requests
requests.post("https://ntfy.sh/th-test",
data="This is a test of ntfy for Tom's Hardware",
headers= "Title": "Python Dictionaries are useful" )
Gelişmiş Bir Gerçek Dünya Sözlüğü Projesi
Birden çok öğeyi depolamak için bir sözlük kullanan daha gelişmiş bir proje oluşturalım. Daha önceki kodu yeniden kullanacağız, ancak ihtiyaçlarımızı karşılayacak şekilde ince ayar yapacağız.
1. İthalat ve talep hattımız aynı kalıyor.
import requests
requests.post("https://ntfy.sh/th-test",
2. Bir dosyayı açın ve belleğe okuyun. Bu, bildirimde gönderilen verilerdir. Bu durumda kodumuzla aynı dizinde bulunan bir görselle başlıyoruz. Görüntü makinenizde farklı bir konumdaysa dosyanın tam yolunu belirtin.
data=open("yoga.jpg", 'rb'),
3. “Başlıklar” adında bir sözlük oluşturun. Bu, bildirimde gönderilen bilgileri oluşturur.
headers=
4. Başlıklar sözlüğünün içinde aşağıdaki anahtarları ve değerleri belirtin.
Öncelikli 5 mesaj acildir, en yüksek önceliğe sahiptir ve telefonunuzu cevaplanana kadar sürekli titreyecek / çalacak şekilde ayarlayacaktır.
Etiketler: Bunlar, bir bildirime simgeler ve fazladan veri eklemek için kullanılan emojiler ve etiketlerdir. Etiketin bir emojisi varsa, onu göreceksiniz.
Başlık: Bildirim için kalın harflerle yazılan en üstteki başlık.
Tıklayın: Bildirime tıkladığınızda web sayfası açılacaktır.
Dosya adı: Gönderilmekte olan dosyanın adı.
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)
5. Kodu kaydedin ve Çalıştır’a tıklayın. Şimdi cihazınıza bakın, özel mesajımızı gösteren bir bildirim göreceksiniz.
Eksiksiz Kod Listesi: Gelişmiş Proje
import requests
requests.post("https://ntfy.sh/th-test",
data=open("yoga.jpg", 'rb'),
headers=
"Priority": "5",
"Tags": "rotating_light",
"Title": "Let me in, it is cold!!",
"Click": "https://www.tomshardware.com/reviews/elecfreaks-cm4-xgo",
"Filename": "yoga.jpg"
)