2015-01-28 8 views
9

मैं .get() का उपयोग उन कुंजी के लिए पूछताछ करता हूं जो एक शब्दकोश में मौजूद हो सकता है या नहीं।किसी नेस्टेड dict में .get() का उपयोग कैसे करें?

In [1]: a = {'hello': True} 
In [3]: print(a.get('world')) 
None 

मेरे पास है, तथापि, शब्दकोशों जहां कुंजी मैं के लिए जाँच करना चाहते हैं संरचना में गहरी है और मैं नहीं जानता कि यदि पूर्वजों वर्तमान या नहीं कर रहे हैं। dict है b = {'x': {'y': {'z': True}}} मैं

In [5]: b.get('x') and b['x'].get('y') and b['x']['y'].get('z') 
Out[5]: True 

का सहारा लेना 'z' के लिए जाँच करने के लिए जब मैं नहीं जानता कि क्या 'x' और 'y' मौजूद है?

उत्तर

8

आप dict.get() से एक खाली वस्तु शब्दकोश लौट चेनिंग कॉल को कम करने के कर सकते हैं:

b.get('x', {}).get('y', {}).get('z') 

लेकिन शायद आप से बेहतर KeyError अपवाद को पकड़ने होगा: में

try: 
    value = b['x']['y']['z'] 
except KeyError: 
    value = None 
+0

रूप @Martijn अंक, पायथन यह अनुमति से क्षमा मांगना बेहतर है। तो, अपवादों के साथ काम करना सही दिशा होना चाहिए! – Caumons

संबंधित मुद्दे