Python Programming

Python Sözlüklerini Değere Göre Etkin Şekilde Sıralama

Spread the love

Python sözlükleri güçlü olmalarına rağmen, doğal olarak sıralanmamıştır. Bu, bir sözlüğü doğrudan sıralayamayacağınız anlamına gelir; ancak değerlerine göre sıralanmış bir gösterim kolayca elde edilebilir. Bu makale, farklı ihtiyaçlara ve Python sürümlerine göre uyarlanmış, bunu başarmak için birkaç etkili yöntemi ele almaktadır.

İçerik Tablosu

Sıralanmış Değerleri Çıkarma

Sadece anahtar-değer ilişkilerini koruyamadan, sıralanmış değerlerin kendilerine ihtiyacınız varsa, bu en basit ve en etkili yaklaşımdır:


my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}

sorted_values = sorted(my_dict.values())
print(sorted_values)  # Çıktı: [1, 2, 5, 8]

Yerleşik sorted() fonksiyonu doğrudan sözlüğün değerleri üzerinde çalışır ve yeni bir sıralanmış liste döndürür. Orijinal anahtar-değer eşlemelerini korumaya ihtiyacınız olmadığında bu yöntem idealdir.

operator.itemgetter ile Sıralama

Özellikle ters sırada sıralama yaparken daha fazla kontrol için, operator.itemgetter temiz ve verimli bir çözüm sunar. Her anahtar-değer çiftinden değeri çıkaran çağrılabilir bir nesne oluşturur:


import operator

my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}

sorted_items = sorted(my_dict.items(), key=operator.itemgetter(1))
print(sorted_items)  # Çıktı: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]

sorted_items_desc = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)
print(sorted_items_desc)  # Çıktı: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]

Bu, sözlük öğelerini (anahtar-değer çiftlerini) değere (her tuplenin ikinci elemanı, indeks 1) göre sıralar. reverse=True ters sırada sıralamayı sağlar. Sonuç, (anahtar, değer) tuple’larından oluşan bir listedır.

Lambda Fonksiyonu ile Sıralama

Bir lambda fonksiyonu, sıralama anahtarı tanımlamak için özlü, satır içi bir alternatif sunar:


my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}

sorted_items = sorted(my_dict.items(), key=lambda item: item[1])
print(sorted_items)  # Çıktı: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]

sorted_items_desc = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)
print(sorted_items_desc)  # Çıktı: [('cherry', 8), ('apple', 5), ('banana', 2), ('date', 1)]

Bu, operator.itemgetter ile aynı sonucu verir, ancak anahtar fonksiyonu doğrudan sorted() içinde tanımlanır ve daha basit durumlar için daha kompakt bir çözüm sunar.

Sıralanmış Sözlükler Oluşturma

Sıralı düzeni koruyan bir sözlüğe ihtiyacınız varsa, Python 3.7+ sözlükleri yerleşik olarak ekleme sırasını korur. Eski sürümler için veya garantili sıralama çok önemliyse, bir sözlük kavrama kullanabilirsiniz:


my_dict = {'apple': 5, 'banana': 2, 'cherry': 8, 'date': 1}

sorted_dict = {k: v for k, v in sorted(my_dict.items(), key=lambda item: item[1])}
print(sorted_dict)  # Çıktı: {'date': 1, 'banana': 2, 'apple': 5, 'cherry': 8}

Bu, sıralanmış değerlere göre sıralanmış anahtar-değer çiftleriyle yeni bir sözlük verimli bir şekilde oluşturur.

Bu makale, farklı bağlamlar ve Python sürümleri için uygun çözümler sunarak, Python sözlüklerini değere göre sıralamak için çeşitli teknikler sundu. Belirli gereksinimlerinize ve kullandığınız Python sürümüne en uygun yöntemi seçmeyi unutmayın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir