Merhabalar, listeden index ile (list.pop(0) gibi) öge silebiliyoruz. Bunu aynı şekilde dictionary objelerinden de yapabilir miyiz?
Denediğiniz kodu, neresinin çalışmadığını ve indeks ile silmekten asıl kastınızı paylaşabilir misiniz? Sözlükler aslında pozisyonel olarak erişilmek için tasarlanmıyor, "anahtar"larla erişiliyor. O yüzden silecekseniz yine anahtar vasıtasıyla pop
üzerinden silebilirsiniz, d.pop("anahtar", None)
. İkinci argümanı da olur da anahtar yoksa hata vermesin diye yazıyoruz. pop
aslında sadece silmekle kalmıyor, sildiğini geri de döndürüyor. O yüzden bulamaz da silemezse ikinci argüman geriye döner.
Sözlükteki anahtarı numara vererek silmek istiyorum, d.pop(0, None) gibi yani. List’te her değere bir numara atıyor ya, o numarayı kullanarak silme işlemi yapabiliyoruz. Listedeki olayın aynısını dict’te yapmak istiyorum.
sözlüklerin öyle bir metodu yok kendiniz bir fonksiyon yazabilirsiniz
def pop_by_index(sozluk, indeks):
return {key: value
for j, (key, value) in enumerate(sozluk.items())
if j != indeks}
İndeks yoksa ne yapsın veya çıkarılanı da geri döndürsün mü kısımları yok
pop = lambda d, i: d.pop(list(d)[i])
sozluk = {"a": 1, "b": 2, "c": 3}
pop(d=sozluk, i=1) # b'yi siler.
assert "b" not in sozluk
Sözlüklerde değerlere numara atanmaz, anahtar atanır. Silme işlemi için ya anahtarları kullanın ya da verilerinizi bir listede saklayın.
del foo['bar']