" Bu dikendeki belirli bir dizinin zaten Yok olmayan bir değere ayarlanmış olup olmadığını nasıl öğrenebilirim? " Sorusunu yanıtlamak için şunu tercih ederim:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
Bu halihazırda çağrılmış olan EAFP konseptine uygundur (affetme istemek, ardından izin almak daha kolaydır). Ayrıca, arama pahalıysa key in my_dict and my_dict[key] is not None
, ilginç olan şeyde olduğu gibi sözlükte yinelenen anahtar aramasını da önler .
Gerçekte karşılaştığınız sorun için, örneğin, varsa int değerini artırmak veya başka bir varsayılan değere ayarlamak için,
my_dict[key] = my_dict.get(key, default) + 1
Andrew Wilkinson'ın cevabında olduğu gibi.
Sözlüğünüzde değiştirilebilir nesneler saklıyorsanız üçüncü bir çözüm vardır. Bunun yaygın bir örneği , anahtarlarınız için bir öğe listesi sakladığınız bir multimap'tır . Bu durumda şunları kullanabilirsiniz:
my_dict.setdefault(key, []).append(item)
Sözlükte anahtar için bir değer yoksa, setdefault yöntemi bunu setdefault öğesinin ikinci parametresine ayarlar. Tıpkı standart bir my_dict [key] gibi davranarak anahtarın değerini döndürür (yeni ayarlanan değer olabilir).