जब एक अजगर शब्दकोश के साथ काम कर मैं आमतौर पर निम्नलिखित मुहावरा का उपयोग करें:शब्दकोश (पायथन) को अपडेट किए बिना डिफ़ॉल्ट डिफॉल्ट में कुंजी की जांच कैसे करें?
try:
val = dct[key]
except KeyError:
print key, " is not valid"
बड़े शब्दकोशों के लिए के बाद से, बयान
if key in dct:
# do something
बहुत ही कुशल नहीं है (ताकि मैं पढ़ याद है, लेकिन मैं है इसे अभ्यास में भी देखा)
आज मैं एक डिफॉल्ट डिक्ट के साथ काम कर रहा था और एक पल के लिए मैं भूल गया था कि एक डिफॉल्ट डिक्ट आपको कभी भी एक एरर नहीं देगा बल्कि इसके बजाय मूल शब्दकोश अपडेट करेगा।
डिफ़ॉल्ट डिफॉल्ट अपडेट किए बिना मैं लुकअप कैसे कर सकता हूं? मुझे वास्तव में एक त्रुटि मुद्रित करने की आवश्यकता है ताकि उपयोगकर्ता कुंजी को पुन: प्रस्तुत कर सके।
धन्यवाद!
अद्यतन: कई पोस्टर्स ने सुझाव दिया कि मेरा विश्वास है कि if key in dct:
धीमा है। मैं वापस गया और उस पुस्तक की जांच की जिसमें मैंने पढ़ा था try: except:
का उपयोग करना बेहतर है। यह 2002 की पायथन कुकबुक है, एलेक्स मार्टेलि द्वारा रेसिपी 1.4, जिसे यहां ऑनलाइन भी पाया जा सकता है: Add an entry to dictionary। पुरानी यादें इतनी अविश्वसनीय हैं! नुस्खा में "धीमे" का उल्लेख नहीं है और यह in
का उपयोग भी नहीं कर रहा है लेकिन has_key
है। यह बस कहता है कि try: except:
अधिक पाइथोनिक (कम से कम नुस्खा का पुस्तक संस्करण) है। सुधार और उत्तरों के लिए धन्यवाद।
संभावित डुप्लिकेट http://stackoverflow.com/questions/1602934/what-is-a-good-way-to-test-if-a-key-exists-in-python-dictionary –
कोई डुप्ली नहीं; यह 'डिफॉल्टडिक्ट' के बारे में है। –
'डी में कुंजी धीमी, अवधि नहीं है। यदि आप अन्यथा कहते हैं, तो आपके पास ठोस प्रमाण है। 'टाइमिट 'का कहना है कि यह एक सफल' डी [कुंजी] 'जितना तेज़ है, और' डी [कुंजी] '+' से अधिक (लगभग 10x) तेज है: पास '(दिया गया है, यह एक स्पष्ट' अगर' कुंजी लगभग हमेशा मौजूद है)। अब, 'dkeys()' (पायथन 2.x) में कुंजी या सूची में कुंजी (डी।कुंजी()) '(पायथन 3.x) धीमा है, लेकिन ऐसा इसलिए है क्योंकि यह जानबूझकर हैश टेबल जानकारी को फेंक रहा है। – delnan