Python Data Structures

Python’da Sözlük Anahtarlarını Liste Olarak Etkin Bir Şekilde Alma

Spread the love

Python sözlükleri, verimli veri depolamanın temel taşlarından biridir. Genellikle, bir sözlüğün yalnızca anahtarlarına erişmeniz gerekir ve bunu başarmak için çeşitli yollar vardır. Bu makale, en yaygın yaklaşımları inceleyerek, performanslarını ve okunabilirliklerini karşılaştırarak ihtiyaçlarınız için en iyi yöntemi seçmenize yardımcı olur.

İçindekiler

dict.keys() Metodu

En basit ve genellikle en verimli yaklaşım, keys() metodunu kullanmaktır. Bu metot, sözlüğün anahtarlarının dinamik bir gösterimi olan bir görünüm nesnesi döndürür. Liste elde etmek için bu görünümü list() ile dönüştürmeniz yeterlidir.


my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = list(my_dict.keys())
print(keys_list)  # Çıktı: ['a', 'b', 'c']

Bu metot, açıklığı ve hızı nedeniyle tercih edilir. keys() anahtar alma için optimize edilmiştir ve listeye dönüştürme hızlı bir işlemdir.

Döngüler Kullanımı

Alternatif olarak, bir for döngüsü kullanarak anahtarları çıkarabilirsiniz. Bu yaklaşım, dict.keys()‘den daha az verimlidir ve genellikle daha az özlüdür.


my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = []
for key in my_dict:
    keys_list.append(key)
print(keys_list)  # Çıktı: ['a', 'b', 'c']

Bu, her bir anahtarı yineleyerek yeni bir listeye ekler. İşlevsel olsa da, diğer metotlardan daha az okunabilir ve daha yavaştır.

Liste Kavramaları

Liste kavramaları, açık döngülere kompakt ve genellikle daha hızlı bir alternatif sunar. Döngü metoduna göre daha verimlidirler, ancak yine de dict.keys()‘den biraz daha yavaştırlar.


my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = [key for key in my_dict]
print(keys_list)  # Çıktı: ['a', 'b', 'c']

Bu tek satır, döngüyle aynı sonucu, geliştirilmiş okunabilirlik ve döngünün kendisinden daha iyi performansla elde eder.

* Operatörüyle Sözlük Açma

Açma operatörü (*), anahtarları çıkarabilir, ancak bu özel görev için daha az yaygın ve daha az okunabilirdir. Sonucun listeye dönüştürülmesi gerekir.


my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = list(*my_dict.keys())
print(keys_list)  # Çıktı: ['a', 'b', 'c']

Bu yaklaşım, dict.keys()‘den daha az sezgisel ve daha az verimlidir ve genellikle yalnızca anahtarların listesini elde etmek için kullanılmamalıdır.

Performans Karşılaştırması

timeit modülünü kullanarak bu metotları karşılaştıralım:


import timeit

my_dict = {str(i): i for i in range(10000)}

time_keys = timeit.timeit(lambda: list(my_dict.keys()), number=1000)
time_loop = timeit.timeit(lambda: [key for key in my_dict], number=1000)
time_comprehension = timeit.timeit(lambda: [key for key in my_dict], number=1000) #Düzeltilmiş tekrar
time_unpack = timeit.timeit(lambda: list(*my_dict.keys()), number=1000)

print(f"dict.keys(): {time_keys:.6f} saniye")
print(f"Döngü: {time_loop:.6f} saniye")
print(f"Liste Kavraması: {time_comprehension:.6f} saniye")
print(f"Açma: {time_unpack:.6f} saniye")

dict.keys()‘in en hızlı olduğunu, ardından liste kavramalarının, sonra döngünün ve açmanın en az verimli olduğunu sürekli olarak göreceksiniz. Zamanlamalar sisteme göre değişse de, göreli performans tutarlı kalır.

Özetle, birden fazla yaklaşım mevcut olsa da, list(my_dict.keys()), sözlük anahtarlarını liste olarak almak için en iyi verimlilik, okunabilirlik ve Pythonik stil kombinasyonunu sunar.

Bir yanıt yazın

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