Şu stilin, bir sözlükte bulunmayan anahtarı önlemek için yaygın bir uygulama olup olmadığını merak ediyordum?Bir sözlükte bulunmayan anahtarı önlemek için bu genel uygulama mıdır?
# default is 0
value = my_dic[100] if 100 in my_dic else 0
Şu stilin, bir sözlükte bulunmayan anahtarı önlemek için yaygın bir uygulama olup olmadığını merak ediyordum?Bir sözlükte bulunmayan anahtarı önlemek için bu genel uygulama mıdır?
# default is 0
value = my_dic[100] if 100 in my_dic else 0
value = my_dic.get(100, 0)
Bu ilginç, daha önce hiç görmedim, @chris. birazcık konuşabilir misin? bu bir python 3+ yapısı mı? – Ramy
nope, en az python 2.6 –
+1, kompakt ve ilginçtir! –
Sözlüğünde olmayan bir tuşa erişmeyi denerseniz, python programınızı kilitleyecek bir özel durum oluşturur. Bunun yerine, istisna "yakalamak" ve daha zarif bir şey yapmalısınız.
o durum yakalamak için daha iyi bir uygulamadır:
try:
value = my_dic[100]
except KeyError:
print("key not found in dictionary") #or handle the error more elegantly
Yazıyı okumadım ama burada daha fazla bilgi edinebilirsiniz: http://en.wikipedia.org/wiki/Exception_handling
', lütfen 'except' değil. –
ciddi mi? Bir istisna kolu tutmayı denedim performansta etkisi olacaktır. –
@ Chris, başka bir iyi nokta. istisnalar aşmayın. – Ramy
siz "varsayılan değeri gerekiyorsa "Her yerde, olası bir alternatif olarak defaultdict'u düşünün. (Bir fabrika/geri arama yaklaşımı, "varsayılan değer" ile iyi bir esneklik sunar.)
Mutlu kodlama.
Ancak bunu Python Coding Style Guidelines göre Sen yapılandırmalıyım söyleyebilirim, geçerli piton sözdizimi senin eğer öyleyse gibi başka tablolar aşağıda
if <condition>:
<statements>
else:
<statements>
Lütfen, (koşul): 'durumunda yapmayın. Sadece şunu yapın: eğer durum: '. * Gereksiz parantezlere ihtiyacımız yok. * –
Üzgünüm,
OP'nin kodu bir [koşullu ifade] 'dir (http://docs.python.org/reference/expressions.html?highlight=conditional#conditional-expressions), bir "if" [bileşik] ifadesi değil - En azından bu nedenle, cevabınız özellikle alakalı değil. – martineau
Bkz Chris'in cevap. Şüphesiz python resmi belgelerini kontrol etmelisiniz, çok iyi yazılmış ve tamamlanmış! Gördüğüm en çok dil doküman grubu. KeyError' haricinde – slezica