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
operator.itemgetter
ile Sıralama- Lambda Fonksiyonu ile Sıralama
- Sıralanmış Sözlükler Oluşturma
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.