2010-12-14 16 views

cevap

32
value = my_dic.get(100, 0) 
+0

Bu ilginç, daha önce hiç görmedim, @chris. birazcık konuşabilir misin? bu bir python 3+ yapısı mı? – Ramy

+1

nope, en az python 2.6 –

+0

+1, kompakt ve ilginçtir! –

1

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

+1

', lütfen 'except' değil. –

+0

ciddi mi? Bir istisna kolu tutmayı denedim performansta etkisi olacaktır. –

+0

@ Chris, başka bir iyi nokta. istisnalar aşmayın. – Ramy

2

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.

0

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> 
+0

Lütfen, (koşul): 'durumunda yapmayın. Sadece şunu yapın: eğer durum: '. * Gereksiz parantezlere ihtiyacımız yok. * –

+2

Üzgünüm, demek istedim ama hızlı yazmaya çalışıyordum çünkü hızlı bir şekilde yanıtlanacağını varsayıyordum. –

+2

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

İlgili konular