Dict'ten Index ile Öge Silmek

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

enumerate, sözlük oluşturma

1 Beğeni
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
3 Beğeni

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']
1 Beğeni