Aşağıdaki kodu iki farklı yolla yazdım. Bunu yapmanın "doğru pythonic" yolunu bulmaya çalışıyorum. Her ikisinin de sebeplerini açıklayacağım.Sözlük değerini düzeltmek için doğru yol python
İlk yol, EAFP. Bu pythons EAFP priciple kullanır, ancak bazı kod çoğaltma neden olur.
try:
my_dict['foo']['bar'] = some_var
except KeyError:
my_dict['foo'] = {}
my_dict['foo']['bar'] = some_var
İkinci yol, LBYL. LBYL tam olarak pythonic olarak kabul edilmez, ancak kod çoğaltmasını kaldırır.
if 'foo' not in my_dict:
my_dict['foo'] = {}
my_dict['foo']['bar'] = some_var
Hangi yol en iyi olarak değerlendirilir? Yoksa daha iyi bir yolu var mı?
Ben ikinci yolu kullanırsınız olmadan Sonsuz derinlikte sözlükleri için izin veren bir özyinelemeli
defaultdict
desen, tanıtacağım. Tekrarlanan kodlar hoş değil. Eğer 'bar' foo olursa, bir kere değiştirmelisiniz. – cdonts