Python’da sözlük anahtarlarını liste olarak nasıl döndürürüz?

Python 2.

Python 2.7’de sözlük anahtarlarınıdeğerlerini veya öğelerini liste olarak aşağıdaki şekilde alabiliriz:

>>> newdict = {1:0, 2:0, 3:0}
>>> newdict.keys()
[1, 2, 3]

Python >= 3.3’te benzer bir şeyi denesek aşağıdaki gibi sonuç alacağız:

>>> newdict.keys()
dict_keys([1, 2, 3])

Sonrasında bu sonucu bir listeye dönüştürmek için de aşağıdakini yaparız:

newlist = list()
for i in newdict.keys():
    newlist.append(i)

Peki, Python 3’te bir liste döndürmenin daha iyi bir yolu var mı?


list()

list(newdict.keys()) yöntemini deneyebiliriz.

Bu, dict_keys nesnesini bir listeye dönüştürür.

Öte yandan, bu işlemi gerçekten isteyip istemediğimizi bir düşünelim. dict_keys nesnesi çoğu durumda bir liste gibi davranır. Örneğin;

for key in newdict.keys():
  print(key)

Tabiki, ekleme işleçleri çalışmayabilir, ancak bu durum zaten sözlük anahtarlarının bir listesi için çok da mantıklı olmayacaktır.

Liste üreteçleri

Liste üreteçlerini de kullanabiliriz:

>>> newdict = {1:0, 2:0, 3:0}
>>> [k  for  k in  newdict.keys()]
[1, 2, 3]

Ya da daha kısa bir şekilde;

>>> [k  for  k in  newdict]
[1, 2, 3]

Not: Öğre sıralamasının aynı kalması Python 3.7 altındaki sürümlerde her zaman geçerli olmayacaktır.

Paket açma

Python >= 3.5 alternatifi: bir listeye açın [*newdict]

Python 3.5 ile yeni açma genellemeleri (PEP 448) tanıtıldı. Dolayısıyla aşağıdakini artık kolayca yapabiliriz:

>>> newdict = {1:0, 2:0, 3:0}
>>> [*newdict]
[1, 2, 3]

* ile paket açma, yinelenebilir herhangi bir nesneyle çalışır. Sözlükler de yinelendiğinde anahtarlarını döndürdükeri için kolayca bir liste oluşturabiliriz. 


list(newdict) işlev çağrısı gerçekten gerçekleştirilmediğinden bu yöntem daha hızlı (en azından küçük sözlükler için) çalışacaktır:

%timeit [*newdict]
1000000 loops, best of 3: 249 ns per loop

%timeit list(newdict)
1000000 loops, best of 3: 508 ns per loop

%timeit [k for k in newdict]
1000000 loops, best of 3: 574 ns per loop

daha büyük sözlüklerde ise hız hemen hemen aynıdır (büyük bir koleksiyonda yinelemenin yükü, bir işlev çağrısının küçük maliyetinin önüne geçer).


Benzer şekilde, diziler ve sözlük anahtarları da oluşturabiliriz:

>>> *newdict,
(1, 2, 3)
>>> {*newdict}
{1, 2, 3}

Tuple oluştururken sondaki virgüle dikkat edin!

Bu yazı topluluk tarafından oluşturuldu. Lisans bilgisine bakabilirsiniz. Yanlış veya eksik bilgileri düzenlemek için github üzerinden katkıda bulunabilirsiniz.

Kategoriler: Yazı, Python

Okumaya devam et!

Python’da dosyalar içe nasıl aktarılır?

Python’da diğer dosyaları içe nasıl aktarabiliriz? file.

Python101 – Gelişmiş Fonksiyon Örnekleri

Bazıları için bu bölümü yararlı olabilir, ancak bir kısım yeni başlayan için ise kafa karıştırıcı olacaktır.

Python’da bir nesnenin yinelenebilir olduğu nasıl anlaşılır?

Elimde bir obje olsun ve bu objenin yinelenebilir olup olmadığını merak ettiğimi varsayalım.

Python sözlüklerine yeni anahtarlar nasıl eklenir?

Python sözlüğü oluşturulduktan sonra anahtar eklemek mümkün mü? .

Yorum Gönderin

E-posta hesabınız yayımlanmayacak.

koddla
Tema Mundana by WowThemes.net.