Python'da Bir Sözlüğü Değere Göre Sıralama

Python sözlüğünü değerlerine göre nasıl sıralayacağınızı öğrenin. sorted() yöntemini, özel anahtar lambdaları ve sıralı dikte yapıları oluşturmayı kullanarak sıralamayı keşfedin.

Bu Çözümü Editör'de deneyin

Genel Bakış

Sözlükler öncelikle benzersiz anahtarlar kullanan hızlı arama işlemleri için oluşturulmuş olsa da, çoğu zaman sözlük öğelerini değerlerine göre sıralamanız gerekecektir. Örneğin, öğrencileri sınav notlarına göre sıralamak, ürünleri en ucuzdan en pahalıya doğru listelemek veya kelime sayılarını sıklığa göre sıralamak gibi.

Python'da, standart sözlük yapıları listeler gibi sıralama yöntemlerini desteklemediğinden, bir sözlüğü yerinde doğrudan sıralayamazsınız. Bunun yerine, standart yaklaşım, sözlüğün öğelerini ".items()" yöntemini kullanarak demetler halinde almak, özel bir sıralama anahtarıyla yerleşik "sorted()" işlevini kullanarak bu demetleri sıralamak ve ardından sözlüğü sıralanan öğelerden yeniden oluşturmaktır.

Sıralama anahtarı genellikle tanımlama grubunun ikinci öğesini (sözlük değeri) döndüren bir lambda işlevidir: `key=lambda item: item[1]'.Python 3.7+'dan beri standart sözlükler ekleme sırasını korur. 'dict()' yapıcısını kullanarak sıralanmış demet listesini tekrar sözlüğe yeniden dönüştürmek, yinelemeye hazır, temiz, sıralanmış bir sözlük döndürür.

Kod ve Yürütme Çıkışı

Bu komut dosyası, lambda işlevlerini kullanarak test puanları sözlüğünü değerlere göre hem artan hem de azalan sırada sıralamayı gösterir.

sort_dict_values.py
Editör'de deneyin
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)

# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)

# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)

# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)
Terminal Çıkışı
Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}

Adım Adım Uygulama

  • Anahtar/değer çiftlerini bir tanımlama listesi olarak almak için my_dict.items() öğesini çağırın.
  • Sözlük öğelerini sorted() işlevine aktarın.
  • sorted() işlevine değere göre (her demetin ikinci öğesi) sıralama yapması talimatını vermek için key=lambda item: item[1] belirtin.
  • Öğeleri azalan düzende sıralamak için isteğe bağlı bir bağımsız değişken olarak ters=True değerini iletin.
  • Sıralanmış demetlerin listesini dict() yapıcısına ileterek sıralanmış sözlüğü yeniden oluşturun.

Sıkça Sorulan Sorular

key=lambda item: item[1] ne anlama geliyor?

sorted() işlevi, öğeler dizisinin her bir öğesini (bir (anahtar, değer) dizisi) lambda işlevine iletir. item[1], Python'a demetleri değere göre sıralamasını söyleyerek değer bileşenini çıkarır.

Bir sözlüğü sıralamak onun anahtar arama hızını etkiler mi?

Hayır, anahtar aramalar O(1) ortalama zaman karmaşıklığı olarak kalır çünkü sıralama, temel karma tablosu yapısını değil yalnızca yineleme sırasını değiştirir.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.