What Will I Learn? (Bu yazıda ne öğreneceksin?)
- You will learn detailed information about dictionaries (sözlükler hakkında detaylandırılmış bilgiler)
- You will learn creating and using a dictionary (sözlük oluşturma ve kullanımı)
- You will learn adding elements to a dictionary (sözlüğe eleman ekleme)
Requirements(Gereklilikler)
Python 3.6 (Kodları çalıştırmak için herhangi İDE veya Python 3.6 gerekiyor)
Difficulty (Zorluk)
- Intermediate(Orta)
10
Daha önceki derslerde öğrendiğimiz birçok veri türleri gibi (karakter dizileri , sayılar , dosyalar ve anlatılmayan diğer türler ) sözlükler de bir veri türüdür. Her veri türlerinin kendine ait yardımcı fonksiyonları bulunduğunu söylemiştik. Bu durum sözlükler içinde geçerlidir. Şunu söylemek gerekirse sözlükler Python da önemli veri türlerinin başında gelir. Neden? çünkü sözlükle farklı iki veri tipinin bir araya gelmesi ile oluşan birleşik bir veri türüdür. Ayrıca ileri seviye Python için sözlükler olmazsa olmazdır. Daha bahsetmedik ama bunu biraz açarsak, pythonun ve diğer geliştiricilerin özel modüllerinin içinde sözlükler sıkca yer almaktadır ki bununda anlamı sözlükler oldukça fazla kullanılan veri türlerinden biridir. Sözlüklerden bahsettikten sonra nasıl tanımlayacağımızı öğrenelim.
Nasıl tanımlanır ?
Sözlüklerin yapısı diğer veri türlerinden biraz farklıdır. Tanımlamadan önce şundan bahsedelim. Sözlük veri türü gerçek hayatta sözlüğe benzediğinden bu ismi almıştır. Yani günlük hayatta kelime anlamına baktığımızda sözlük yapısı nasıl ise bu veri türünde de nerdeyse aynıdır. Neyse tanımlamamıza geçelim
değişken_adı = {"anahtar" : "değer"}
Kalıp olarak sözlük bu şekilde tanımlanır. Aslında bir değişkenin sözlük olup olmadığını Python söz dizimi şu şekilde anlar. Eğer tanımda {} küme parantezleri var ise bu değişken sözlük türündedir. Yada
tpye(değişken_adi)
ilede bu verinin sözlük olup olmadığını anlayabiliriz.
Şimdide sözlük tanımlayalım.
ornekSozluk = {"utopian" : "şirket" , "bitcoin" : "dijital para" , "block-chain" : "teknoloji"}
Bahsetmek istediğim bir nokta daha var. Şimdi sizce bu sözlük kaç elemanlı? Eğer cevabınız 6 ise doğru değil. Hemen sözlüğümüzün kaç elemanlı olduğuna bakalım
ornekSozluk = {"utopian" : "şirket" , "bitcoin" : "dijital para" , "block-chain" : "teknoloji"}
len(ornekSozluk)
3
Gördüğünüz gibi sözlüğümüz 3 elemanı sahiptir. Burdaki elemanın ve anlamının birbiriyle dönüşümlü ve bağlantılı şekilde kullanılabilmesidir. İleriki konularda bunu açıklayacağım.
Sözlük elemanlarına erişim
Sözlüğümüzü oluşturduk ve daha sonraki işlemler için anahtarlar ile sözlük içindeki değerlere erişmek istiyoruz? Sözlük içindeki değerlere erişmek için aşağıdaki kalıbı kullanıyoruz.
sozluk_Adı[anahtar adı]
Unutmayalım sözlüklerde eleman sırası yoktur!! Bundan dolayı sözlükler özel verilerdir aslında. Çünkü sözlük içersine yapacağımız işlem ile ilgili anahtar ve değer alanlarını doldurmalıyız. Ardından bu verileri uygun şekilde kullanmalıyız. Bunu şöyle açıklayabilirim mesela yazdığınız program coğrafya bilgilerini içersin. Bunun için şöyle bir sözlük oluşturmalıyız.
baskentler = {"Almanya" : "Berlin" , "Amerika" : "Washington" , "İngiltere" : "Londra" , "Rusya" : "Moskova"}
gibi ve bu sözlük içersine alakasız elemanlar eklememeliyiz. Çünkü yukarıda bahsettiğimiz gibi sözlüklerde eleman sırası yok o yüzden programlanabilirliğin devam etmesi için alakalı konunun elemanlarını içermek zorundadır. Aksi halde sözlüğünüz işe yaramaz bir sözlükten fazlası olmayacaktır.
Sözlükler için detaylı bilgi
Şimdide küçük bir örnek yapalım. Sadece başkentlere sefer yapan bir hava yolu şirketi olsun. Müşteri gitmek istediği ülkeyi girip o ülke için sefer olup olmadığını sorgulamaya çalışsın.
baskentler = {"Almanya" : "Berlin" , "Amerika" : "Washington" ,
"İngiltere" : "Londra" , "Rusya" : "Moskova"}
sefer=input("Hos geldiniz! uçuş yapmak istediğiniz ülkeyi baş harfi büyük olarak girin : ")
try:
print("{} için sadece {} uçuşumuz mevcuttur".format(sefer,baskentler[sefer]) )
except KeyError:
print("üzgünüz! mevcut olmayan veya hatalı uçuş bilgisi girdiniz")
Hataların önüne geçmek için try : except bloğunu kullandarak bu şekilde müşteriye doğru bilgiyi üreten programı yazmış olduk.
Aynı kod yapısını if koşulu ile de sağlayabilirdik.
baskentler = {"Almanya" : "Berlin" , "Amerika" : "Washington" ,
"İngiltere" : "Londra" , "Rusya" : "Moskova"}
sefer=input("Hos geldiniz! uçuş yapmak istediğiniz ülkeyi baş harfi büyük olarak girin : ")
if sefer in baskentler:
print("{} için sadece {} uçuşumuz mevcuttur".format(sefer,baskentler[sefer]) )
else :
print("üzgünüz! mevcut olmayan veya hatalı uçuş bilgisi girdiniz")
Fakat bunun sağlıklı çalışacağından emin değilim. Bütün python kuralları ile birlikte sözlükler üzerinde şart ararken try except bloğunu kullanmanızı tavsiye ederim.
Şimdi farklı veri türlerinin bir araya gelerek sözlükleri oluşturduğunu söylemiştik. Yukarıdaki anlatımlarda farkettiyseniz hep karakter dizileri üzerinden konu işlendi. Şimdide sözlük oluştururken hangi veri tiplerini bir araya getirebiliriz ona bakalım. Mesela kişi bilgileri tutan bir sözlüğümüz olsun burda kullanıcı adını girdikten sonra o kullanıcıya ait birkaç bilgiye erişebilelim. Hemen bunun sözlük yapısını oluşturalım.
kullanıcılar = {
"guinsoo": {"konum": "İstanbul",
"itibar seviyesi" : 61,
"utopian üyeliği" : "Var"},
"trouble6856" : {"konum": "Londra",
"itibar seviyesi" : 39,
"utopian üyeliği" : "Yok"},
"Sesoyd" : {"konum": "Barselona",
"İtibar seviyesi" : 58,
"utopian üyeliği" : "Var"} }
Burda sözlük oluştururken iki farklı veri türünü birleştirdik. Birincisi karakter dizesi ikincisi ise sözlük veri türü. Yani sözlük içersinde sözlük kullanabilmek mümkün. Yukardaki sözlüğü oluşturduğumuzu varsayalım ve bu sözlük üzerinden bir örnek verelim :
username=input("Kullanıcı bilgi sistemine hoş geldiniz. Lütfen ilgili kullanıcı adı girin : ")
detail = input("Kullanıcı hakkında ne öğrenmek istiyorsunuz (konum,itibar seviyesi,utopian uyeliği? :")
try:
print("Kullanıcı adı : {} , {} --> {}" .format(username,detail,kullanicilar[username][detail]))
except KeyError:
print("Girdiginiz kullanici sistemimizde mevcut degildir!")
Örneğimizde kullanıcıya hangi kullanıcı hakkında bilgi almak istediğini soruyoruz. Ardından eğer kullanıcı sistemimizde mevcutsa istenen bilgileri ekrana yazdırıyoruz. Değilse kullanıcıyı uyarıyoruz. Çıktımıza bakalım :
Dikkat edilmesi gereken şeyi tekrar vurgulamak istiyorum. Dizilerde olduğu gibi sözlüklerde 'eleman sırası' kavramı yoktur. Hatta yukarıdaki kullanıcılar sözlüğüne sıralı olarak erişmeye çalışalım bakalım ne olucak... Yukarıdaki sözlüğü oluşturduğumuzu varsayarak bir örnek üzerinden bunu göstermek istiyorum.
print(kullanicilar[0][1])
Çalıştırdığımızda şu şekilde hata alırız:
Görüldüğü üzere 'eleman sırası' durumu mevcut değil bu yüzden buna dikkat etmek gerekli. Sözlüğümüzü oluşturduk ve üzerinde bir takım işlemler yaptık. Şimdi ise var olan sözlüğümüze nasıl eleman ekleyebiliriz?
Eleman ekleme
Sözlüklerde diğer veri türleri gibi sonradan genişleyebilir. Sözlüklere yeni eleman eklemek için şu kalıbı kullanıyoruz.
sözlük_adı[anahtar adı(veri türüne dikkat)] = değer
Daha önce oluşturduğumuz yukarıdaki kullanicilar adli sözlüğümüze var olan kullanicilar için yeni anahtar-değer çiftleri ekleyelim ekleyelim.
kullanicilar["guinsoo"]["yas"]=22
kullanicilar["guinsoo"]["cinsiyet"]="erkek"
Şimdide "guinsoo" adlı kullanıcımızın bilgilerinizi yazdıralım.
print(kullanicilar["guinsoo"])</code
Çıktımız ise:
Görüldüğü gibi yas ve cinsiyet anahtarlarımızı başarıyla ekledik. Hatırlatmak istediğim bişey var burda eklediğimiz anahtarları sırası ile eklemiş. Fakat bu her seferinde böyle olmayacaktır. Çünkü dediğimiz gibi sözlük veri türünde 'sıra' kavramı yoktur. Ekleme işleminide bu şekilde öğrenmiş olduk. Artık sözlükler hakkında bilgiye sahipsiniz. Konu hakkında kendiniz birkaç program yazmanızı tavsiye ederim. Bu bilginin kalıcılığını arttıracaktır.
Curriculum(Diğer dersler)
Karakter dizilerini biçimlendirmek
Dosya işlemleri
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @sedatyildiz, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@guinsoo, I like your contribution to open source project, so I upvote to support you.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks @steemitstats ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Utopian rules updated, take a look.
(Utopian kuralları güncellendi bir bak istersen.)
https://steemit.com/utopian-io/@utopian-io/utopian-rules-update-8-dropped-crowdin-support-english-only-and-more
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yeni kurallar yarın 20:00 dan sonra uygulanacak :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
İnşallah yayınlanma saatine ve tarihine göre değerlendirirler. Emeğin boşa gitmesin.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @guinsoo I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit