Python Dictionary Nasıl Kullanılır?

Cevap için teşekkürler keşke önce oranın nasıl çalıştıgını anlatsaydınız bu biraz kafa karıştırdı.

Öncelikle programlama adımlarından gidelim. :)

İlk başta elimizde, verileri yazmamız gereken bir dictionary olması lazım, değil mi?

Python:
studentDictionary = {}

Bu kodla "studentDictionary" adında bir Dictionary yani verileri tutacağımız yeri ayarlarıyoruz. Dictionary'de veriler, key/pair denilen sistemle tutulur. Yani her verinin (ki bu string de olabilir, Integer da, liste de, hatta başka bir dictionary bile) bir anahtarı vardır. Sözlükte veriyi bu anahtarla buluruz.

Sonrasında kullanıcıdan 3 kez öğrenci bilgisini girmesini ve akabinde sistemin 3 kez bu bilgileri dictionary'e yazması lazım, değil mi?

Senin kodunda bunu 3 kez alt alta yazmıştın ki bu pek tercih edilmez, zira 3'ü de aynı kod. Üstelik senin kodunda kullanıcıdan sadece bir kez input yani değer alıyorsun ve sürekli aynı değeri yazıyorsun.

Kısacası kullanıcı verisi girme ve veriyi sözlüğe yazma işlemini 3 kez yapmak lazım.

Ben bunun için, For döngüsü kullandım.

Kod:
for i in range(3):

Şimdi, For loopta "i" kullanıp, girdi olarak sadece tek bir sayı verirsen, bu şu anlama gelir:

Girilen sayı = 3 (Biz 3 girdik, bu nedenle 3. Ne girersen o olur)

1) i = 0
2) Döngü içindeki işlemi yap
3) i +1 (i değerini 1 arttır)
4) Eğer i, girilen sayıya eşitse döngüden çık. Eşit değilse 1. adıma dön ve tekrar et.

Burada girilen sayı, parantez içindeki 3 değeridir.

Bundan sonrası ise input komutuyla verileri alma ve sözlüğe yazma.

Python:
studentNumber = input("Ogrenci Numarasi: ")
studentName = input ("Ogrenci Adi: ")
studentSurname = input("Ogrenci Soyadi: ")
studentPhone = input("Ogrenci Telefon Nunarasi: ")

Burada inputtan gelen verileri ilgili değişkenlere yazıyoruz. Input komutunda kullanıcının girdiği değerler String yapısına sahiptir.

Geriye bunları sözlüğe yazmak kaldı:

Python:
studentDictionary.update({studentNumber: {"ad": studentName, "soyad": studentSurname, "telefon": studentPhone} })

"Update()" Python'un içinde gelen bir fonksiyondur. Görevi, anahtar ve kilit olarak belirttiğin ikiliyi sözlüğe yazmaktır. Örnek: {key: value}

Fakat dictionary yapısında, bir anahtar sadece bir veriye bağlanabilir. Yani şöyle bir şey olamaz:

Python:
# Bu mümkün değil

{key: value_1, value_2...}

Bu nedenle, her kullanıcıda farklı olan bir değeri anahtar olarak seçiyoruz. Anahtarın değeri olarakta yeni bir sözlük yaratıyoruz. Bu durumda her kullanıcıda farklı olacak şey nedir? Tabii ki de öğrenci numarası:

Bu işlemin sonunda ana dictionary'deki her item şöyle bir değere sahip olacak:

Python:
{studentNumber: {"name": studentName, "surname": studentSurname, "phone": studentPhone} }

Bu işlemi 3 kere yapınca, 3 farklı öğrencinin verisi sisteme girilmiş olacak.

Üstelik öğrenci sayısı değişince yapman gereken tek şey, For looptaki 3 yerine yeni öğrenci sayısını girmek olacak.

Programın sonunda ise ana dictionary'i yazdırıyoruz:

Python:
print(studentDictionary)

Bu kadar. :)

Umarım anlaşılır olmuştur.
 
Öncelikle programlama adımlarından gidelim. :)

İlk başta elimizde, verileri yazmamız gereken bir dictionary olması lazım, değil mi?

Python:
studentDictionary = {}

Bu kodla "studentdictionary" adında bir dictionary yani verileri tutacağımız yeri ayarlarıyoruz. Dictionary'de veriler, key/pair denilen sistemle tutulur. Yani her verinin (ki bu string de olabilir, ınteger da, liste de, hatta başka bir dictionary bile) bir anahtarı vardır. Sözlükte veriyi bu anahtarla buluruz.

Sonrasında kullanıcıdan 3 kez öğrenci bilgisini girmesini ve akabinde sistemin 3 kez bu bilgileri Dictionary'e yazması lazım, değil mi?

Senin kodunda bunu 3 kez alt alta yazmıştın ki bu pek tercih edilmez, zira 3'ü de aynı kod. Üstelik senin kodunda kullanıcıdan sadece bir kez input yani değer alıyorsun ve sürekli aynı değeri yazıyorsun.

Kısacası kullanıcı verisi girme ve veriyi sözlüğe yazma işlemini 3 kez yapmak lazım.

Ben bunun için, for döngüsü kullandım.

Kod:
for i in range(3):

Şimdi, for loopta "i" kullanıp, girdi olarak sadece tek bir sayı verirsen, bu şu anlama gelir:

Bundan sonrası ise input komutuyla verileri alma ve sözlüğe yazma.

Python:
studentNumber = input("Ogrenci Numarasi: ")
studentName = input ("Ogrenci Adi: ")
studentSurname = input("Ogrenci Soyadi: ")
studentPhone = input("Ogrenci Telefon Nunarasi: ")

Burada inputtan gelen verileri ilgili değişkenlere yazıyoruz. Input komutunda kullanıcının girdiği değerler string yapısına sahiptir.

Geriye bunları sözlüğe yazmak kaldı:

Python:
studentDictionary.update({studentNumber: {"ad": studentName, "soyad": studentSurname, "telefon": studentPhone} })

"Update()" Python'un içinde gelen bir fonksiyondur. Görevi, anahtar ve kilit olarak belirttiğin ikiliyi sözlüğe yazmaktır. Örnek: {key: value}

Fakat dictionary yapısında, bir anahtar sadece bir veriye bağlanabilir. Yani şöyle bir şey olamaz:

Python:
# Bu mümkün değil.

{key: value_1, value_2...}

Bu nedenle, her kullanıcıda farklı olan bir değeri anahtar olarak seçiyoruz. Anahtarın değeri olarak da yeni bir sözlük yaratıyoruz. Bu durumda her kullanıcıda farklı olacak şey nedir? Tabii ki de öğrenci numarası:

Bu işlemin sonunda ana Dictionary'deki her item şöyle bir değere sahip olacak:

Python:
{studentNumber: {"name": studentName, "surname": studentSurname, "phone": studentPhone} }

Bu işlemi 3 kere yapınca, 3 farklı öğrencinin verisi sisteme girilmiş olacak.

Üstelik öğrenci sayısı değişince yapman gereken tek şey, for looptaki 3 yerine yeni öğrenci sayısını girmek olacak.

Programın sonunda ise ana Dictionary'i yazdırıyoruz:

Python:
print(studentDictionary)

Bu kadar. :)

Umarım anlaşılır olmuştur.

Gerçekden teşekkürler for döngüsünü bilmediğim için orayı anlamakda zorlandım fordöngüsünü öğrendiğim zaman o kısmıda rahatca anlayacağımı düşünüyorum.

Python:
studentDictionary.update({studentNumber: {"ad": studentName, "soyad": studentSurname, "telefon": studentPhone} })

Bu kodda benim anladığım update() komutu mevcut sözlügü güncellemeye yarıyor studentDictionary içi boş oluğu için buda bir günceleme sayılacakdır koda gelince.
Studentdictionary içine studentnunber sozcüğü oluşturup onun içinede ad anahtarı oluşturup karışsınada kullanıcıdan gelen yani inputdan gelen studentname atıyorsun diperleri de aynı şekilde burayı doğru anladığımı düşünüyorum.

Python:
{key: value_1, value_2...}

Burada bir anahtara bir tane veri koyulabilir 2. veriyi koyamasınız olarak anladım.
Geri kalanı anlamam zor olmadı bir de benim atdığım kod da son satır da.

Python:
ogrNo = input('öğrenci no: ')
ogrenci = ogrenciler[ogrNo]
print(ogrenci)

Python:
print(f"Aradığınız {ogrNo} nolu öğrencinin adı: {ogrenci['ad']} soyadı: {ogrenci['soyad']} ve telefonu ise {ogrenci['telefon']}")

Bu kısımlarını anlatmanızı rica edeceğim.
.format() komutnu öğrendim ama burası biraz bayin yaktı
 
Denim dediklerimi doğru anlamışsınız. Update() fonksiyonu, olmayan değeri ekleyeceği gibi, var olan değeri degünceller.

Son attığınız kısmı ben de anlamadım. Yani kodun yapmak istediğini anladım ama kodu anlamadım. Bu konuda bir kod yazıp size atmaya çalışırım.

Anladığım kadarıyla öğrenci no. girince, sistem kullanıcıya ilgili öğrenciyle alakalı bilgileri verecek.
 
Denim dediklerimi doğru anlamışsınız. Update() fonksiyonu, olmayan değeri ekleyeceği gibi, var olan değeri degünceller.

Son attığınız kısmı ben de anlamadım. Yani kodun yapmak istediğini anladım ama kodu anlamadım. Bu konuda bir kod yazıp size atmaya çalışırım.

Anladığım kadarıyla öğrenci no. Girince, sistem kullanıcıya ilgili öğrenciyle alakalı bilgileri verecek.

Teşekkürler sizin dediğiniz gibi yol uzadı oradaki kod satırıda bütün öğrencilerin bilgileri alındıktan sonra ulaşılmak istenen öğrenci bilgilerini göstermeye yarıyor ama nasıl olduğunu anlayamadığım için size sordum.
 

Geri
Yukarı