Ana içeriğe geç

Python'da Sözlüğü Değere Göre Nasıl Sıralarsınız

Python'da bir sözlüğü değerlere göre sıralamanın etkili yöntemlerini öğrenin. Artan ve azalan sıralamayı keşfedin ve anahtara göre sıralama için bonus ipuçları.
· 5 dk. oku

Yapay Zeka ile Keşfedin

Sıralama, veri işlemede temel bir işlemdir ve Python sözlükleri de bunun istisnası değildir. İster karmaşık bir veri analizi projesi üzerinde çalışalım ister basit bir betik yazalım, bir sözlüğü değerlere göre verimli biçimde nasıl sıralayacağımızı anlamak son derece faydalıdır.

Bu yazıda, Python'da sözlükleri değerlerine göre sıralamanın çeşitli yöntemlerini ele alıyoruz; böylece verilerimizi ihtiyaç duyduğumuz şekilde düzenlemek için gerekli araçlara sahip oluyoruz.

Kısa Cevap: Python'da Sözlük Değere Göre Nasıl Sıralanır

Bir sözlüğü hızlıca değerlere göre sıralamak için Python'un yerleşik .sorted() fonksiyonunu bir lambda fonksiyonuyla birlikte kullanabiliriz. Bu yöntem çoğu kullanım durumu için yalın ve etkilidir.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Şimdi, bir adım geri atalım ve Python sözlüklerini ve neden onları sıralamaya ihtiyaç duyabileceğimizi anlayalım.

Python Sözlükleri Nedir?

Python sözlükleri (dictionaries) verileri anahtar-değer çiftleri halinde tutan bir veri yapısı türüdür. Son derece esnektirler ve hızlı arama, ekleme ve silme işlemlerine olanak tanırlar. İşte basit bir örnek:

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}

# No expected output

Yukarıdaki sözlükte, öğrencilerin adları anahtarları, notları ise değerleri temsil eder. 

Sözlükler, verileri verimli bir şekilde saklayıp çağırmamız gerektiği pek çok senaryoda faydalıdır. Ancak, kimi zaman verileri anahtarlara göre değil değerlere göre sıralamak gerekir—örneğin öğrencileri notlarına göre sıralamak istediğimizde.

Python'da Sözlük Değere Göre Nasıl Sıralanır

Şimdi Python'daki .sorted() fonksiyonuna ve bunu sözlükleri değerlere göre sıralamak için nasıl özel olarak kullanacağımıza yakından bakalım.

.sorted() kullanarak sözlüğü değerlere göre nasıl sıralarız

.sorted() fonksiyonu, Python'da güçlü ve esnek bir sıralama aracıdır. Bir sözlüğü değerlerine göre sıralamak için, sıralamanın sözlüğün değerlerine göre yapılacağını belirten bir lambda fonksiyonu kullanabiliriz.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output: 
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Bu örnekte student_scores.items() sözlüğün anahtar-değer demet (tuple) çiftlerinden oluşan bir liste görünümü döndürür. .sorted() fonksiyonu bu çiftleri değerlerine göre (item[1]) sıralar ve dict() sıralı listeyi yeniden sözlüğe dönüştürür.

Bir sözlüğü artan ya da azalan düzende değere göre nasıl sıralarız

Varsayılan olarak .sorted() fonksiyonu artan düzende sıralar. Ancak duruma bağlı olarak, reverse parametresini True ya da False yaparak bunu kolayca azalan ya da artan sıraya çevirebiliriz.

Sözlüğü artan düzende nasıl sıralarız

Belirtildiği gibi, .sorted() fonksiyonu kullanıldığında sözlük varsayılan olarak artan düzende sıralanır. Ayrıca reverse parametresini False yaparak da artan düzen elde edebiliriz.

sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Sözlüğü azalan düzende nasıl sıralarız

Eğer azalan düzende sıralamak istiyorsak, reverse parametresini True yapabiliriz.

sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)

# Expected output:
# {'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}

Bonus: Python'da Sözlüğü Anahtara Göre Nasıl Sıralarsınız

Bu yazı değerlere göre sıralamaya odaklansa da, bir sözlüğü anahtarlarına göre nasıl sıralayacağımızı bilmek de faydalıdır. Bunu da benzer şekilde .sorted() fonksiyonunu kullanarak yapabiliriz.

sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)

# Expected output:
# {'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}

Azalan sıra için, yalnızca reverse=True ayarlayın:

sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)

# Expected output:
# {'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}

Sonuç

Python'da bir sözlüğü değerlerine göre sıralamak, .sorted() fonksiyonunu kullanarak kolayca tamamlanabilen yaygın bir görevdir. Verileri artan ya da azalan düzende istememiz fark etmeksizin, bu teknikleri anlamak veri işleme görevlerimizi daha basit ve daha verimli hale getirir. Bu sıralama yöntemlerinde ustalaşarak, verilerimizi ihtiyaçlarımıza en uygun şekilde tutarlı biçimde düzenleyebiliriz.

SSS

S1: Değerler sayı yerine metin (string) ise sözlüğü değerlere göre sıralayabilir miyim?

C1: Evet, değerler metin (string) olsa bile bir sözlüğü değerlere göre sıralayabiliriz. .sorted() fonksiyonu, sayılarda olduğu gibi alfabetik olarak artan ya da azalan düzende sıralar.

S2: Değerleri iç içe sözlüklerden oluşan bir sözlüğü değerlere göre nasıl sıralayabilirim?

C2: İç içe sözlükler içeren bir sözlüğü sıralamak için, ilgili iç değerleri çıkarıp karşılaştıran özel bir sıralama işlevi tanımlamamız gerekir. Bu, daha karmaşık bir lambda fonksiyonu veya karşılaştırmayı ele alacak ayrı bir fonksiyon gerektirir.

S3: Yeni bir sözlük oluşturmadan sözlüğü değerlere göre yerinde (in-place) sıralayabilir miyim?

C3: Hayır. Python 3.7 öncesi sürümlerde sözlükler doğası gereği sırasız koleksiyonlardır ve 3.7'den itibaren ekleme sırasını koruyor olsalar bile, yerinde (in-place) sıralamak için yerleşik bir yöntem yoktur. Bir sözlüğü sıralamak, her zaman istenen sıraya sahip yeni bir sözlük oluşturur.

S4: Python'da bir sözlüğü değerlere göre sıralamanın zaman karmaşıklığı nedir?

C4: .sorted() fonksiyonunu kullanarak bir sözlüğü değerlere göre sıralamanın zaman karmaşıklığı O(n log n)'dir; burada n, sözlükteki anahtar-değer çiftlerinin sayısıdır. Bunun nedeni, .sorted()'ın dahili olarak bu karmaşıklığa sahip hibrit bir sıralama algoritması olan Timsort'u kullanmasıdır.

S5: Bir sözlüğü değerlere göre sıralamak orijinal sözlüğü değiştirir mi?

C5: Hayır, .sorted() fonksiyonunu kullanarak sözlüğü değerlere göre sıralamak yeni bir sözlük oluşturur. Orijinal sözlük olduğu gibi kalır.

Neetika Khandelwal

Yazar

Neetika Khandelwal

Ben, veri bilimi, yapay zeka (AI) ve Java programlama konularında uzmanlaşmış bir Java geliştiricisi ve deneyimli bir teknik yazarım. Yazılım geliştirmede 3+ yıllık deneyimle, sağlam ve ölçeklenebilir uygulamalar oluşturma ve Java’nın esnekliğinden yararlanarak karmaşık sorunları çözme konusunda güçlü bir uzmanlık geliştirdim. Daha geniş teknoloji topluluğuyla bilgi paylaşmayı önemsiyorum. Kapsamlı teknik makaleler, eğitimler ve kılavuzlar aracılığıyla, karmaşık veri bilimi ve yapay zeka konularını hem yeni başlayanlar hem de deneyimli profesyoneller için anlaşılır hale getirmeye çalışıyorum. Şu anda 125+ blog yayınım bulunuyor.

Konular

İlgili