दिलचस्प पोस्ट
जावा के सिंक्रनाइज़ कीवर्ड का सी # संस्करण? सामग्री सुरक्षा नीति निदेशालय के कारण एक्सटेंशन स्क्रिप्ट लोड करने से इनकार करते हैं मैं कैसे बता सकता हूं कि क्या एक विशेष सीएसएस गुण jQuery के साथ विरासत में मिला है? प्रक्रिया का उपयोग कर एक फ़ोल्डर खोलें। प्रारंभ करें थीम। AppCompat.Light.DarkActionBar – कोई संसाधन नहीं मिला वर्तमान आवेदन से डाक, ट्विटर और फेसबुक द्वारा साझा या पोस्ट कैसे करें? JQuery के डाटैटबल ड्रिल-डाउन पंक्तियाँ कैसे बनाएं? कैसे जावास्क्रिप्ट में एक समारोह को सही ढंग से कर सकते हैं? रूबी में एक यादृच्छिक स्ट्रिंग कैसे उत्पन्न करें यूनिक्स कमांड को दो फाइलों में सामान्य लाइनें ढूंढने के लिए कैसे एक गैर-कॉन्फ्रेंस संदर्भ एक अस्थायी ऑब्जेक्ट से बाध्य नहीं हो सकता है? IE9 पर बॉक्स-छाया फ़ायरफ़ॉक्स, क्रोम पर काम करता है, सही सीएसएस का इस्तेमाल नहीं करता है 3D रिश्तेदार कोण राशि गणना मैं ajax के साथ एक फ़ाइल से JSON ऑब्जेक्ट कैसे लोड करूं? पत्ता हस्ताक्षर को सत्यापित करने में असमर्थ

जांचें कि क्या दी गई कुंजी पहले से ही किसी शब्दकोश में मौजूद है

मैं परीक्षण करना चाहता था कि कुंजी के मूल्य को अपडेट करने से पहले कोई कुंजी शब्दकोश में मौजूद है। मैंने निम्नलिखित कोड लिखा था:

if 'key1' in dict.keys(): print "blah" else: print "boo" 

मुझे लगता है कि यह कार्य पूरा करने का सबसे अच्छा तरीका नहीं है। क्या शब्दकोश में किसी कुंजी के लिए परीक्षण करने का एक बेहतर तरीका है?

Solutions Collecting From Web of "जांचें कि क्या दी गई कुंजी पहले से ही किसी शब्दकोश में मौजूद है"

in एक dict में एक कुंजी के अस्तित्व के लिए परीक्षण करने का इरादा तरीका है

 d = dict() for i in xrange(100): key = i % 10 if key in d: d[key] += 1 else: d[key] = 1 

यदि आप एक डिफ़ॉल्ट चाहते थे, तो आप हमेशा dict.get() उपयोग कर सकते हैं:

 d = dict() for i in xrange(100): key = i % 10 d[key] = d.get(key, 0) + 1 

… और यदि आप किसी भी कुंजी के लिए हमेशा एक डिफ़ॉल्ट मान सुनिश्चित करना चाहते हैं तो आप collections मॉड्यूल से डिफ़ॉल्ट defaultdict उपयोग कर सकते हैं, जैसे:

 from collections import defaultdict d = defaultdict(lambda: 0) for i in xrange(100): d[i % 10] += 1 

… लेकिन सामान्य तौर पर, कीवर्ड में यह करने का सबसे अच्छा तरीका है।

आपको कुंजियों को कॉल करने की ज़रूरत नहीं है:

 if 'key1' in dict: print "blah" else: print "boo" 

यह बहुत तेजी से हो सकता है क्योंकि यह रेखीय खोज करने का विरोध करते हुए शब्दकोश की हैशिंग का उपयोग करता है, जो कॉल करने वाली चाबियां करती थी।

आप कीवर्ड में कुंजी की उपस्थिति के लिए एक शब्दकोश में परीक्षण कर सकते हैं:

 d = {'a': 1, 'b': 2} 'a' in d # <== evaluates to True 'c' in d # <== evaluates to False 

एक शब्दकोश में कुंजी के अस्तित्व की जाँच करने से पहले इसे बदलना मूलभूत रूप से प्रारंभ करना है (उदाहरण के लिए यदि आपके मूल्य सूची हैं, उदाहरण के लिए, और आप यह सुनिश्चित करना चाहते हैं कि एक खाली सूची है जिसमें आप जोड़ सकते हैं जब एक कुंजी के लिए पहला मान डालने) ऐसे मामलों में, आप collections.defaultdict() को प्राप्त कर सकते हैं। collections.defaultdict() प्रकार ब्याज की हो

पुरानी संहिता में, आप के पास कुछ ऐसे उपयोग हैं जो कि has_key() , शब्दकोशों में कुंजी के अस्तित्व को जांचने के लिए एक नापसंद विधि (केवल इसके बजाय key_name in dict_name उपयोग करें)।

आप इसे छोटा कर सकते हैं:

 if 'key1' in dict: ... 

हालांकि, यह सबसे अच्छा एक कॉस्मेटिक सुधार है आप यह क्यों मानते हैं कि यह सबसे अच्छा तरीका नहीं है?

मैं इसके बजाय setdefault विधि का उपयोग करने की सिफारिश करेगा। ऐसा लगता है कि यह सब कुछ आप चाहते हैं।

 >>> d = {'foo':'bar'} >>> q = d.setdefault('foo','baz') #Do not override the existing key >>> print q #The value takes what was originally in the dictionary bar >>> print d {'foo': 'bar'} >>> r = d.setdefault('baz',18) #baz was never in the dictionary >>> print r #Now r has the value supplied above 18 >>> print d #The dictionary's been updated {'foo': 'bar', 'baz': 18} 

स्वीकृत उत्तर के प्रस्तावित तरीकों (10 एम लूप) की गति निष्पादन के बारे में अतिरिक्त जानकारी के लिए:

  • 'key' in mydict बीत गई समय 1.07 सेकंड
  • mydict.get('key') बीत गया समय 1.84 सेकंड
  • mydefaultdict['key'] बीत गया समय 1.07 सेकंड

इसलिए in या defaultdict का उपयोग करने के बारे in सलाह दी जाती है

जांच के लिए आप has_key() विधि का उपयोग कर सकते हैं

 if dict.has_key('key1'): print "it is there" 

यदि आप एक मान चाहते हैं तो आप get() विधि का उपयोग कर सकते हैं

 a = dict.get('key1', expeced_type) 

यदि आप ट्यूपल या लिस्ट या डिक्शनरी या किसी स्ट्रिंग को रिटर्न वैल्यू के रूप में डिफ़ॉल्ट मान के रूप में चाहते हैं, तो get() विधि का उपयोग करें

 a = dict.get('key1', {}).get('key2', []) 

बस एक एफआईआई क्रिस को जोड़ रहा है बी (सर्वश्रेष्ठ उत्तर):

 d = defaultdict(int) 

साथ ही काम करता है; इसका कारण यह है कि defaultdict int() कॉल करना 0 देता है, जो कि कौन defaultdict है, जो कि पर्दे के पीछे होता है (जब एक शब्दकोश का निर्माण होता है), इसलिए दस्तावेज में "फ़ैक्टरी फ़ंक्शन" नाम है।

आप has_key () विधि का उपयोग कर सकते हैं:

 if dict.has_key('xyz')==1: #update the value for the key else: pass 

या नहीं मिला अगर डिफ़ॉल्ट मूल्य सेट करने के लिए dict.get विधि:

 mydict = {"a": 5} print mydict["a"] #prints 5 print mydict["b"] #Throws KeyError: 'b' print mydict.get("a", 0) #prints 5 print mydict.get("b", 0) #prints 0 

जिस तरीके से आप परिणाम प्राप्त कर सकते हैं:

  • अगर your_dict.has_key (कुंजी) को पायथन 3 में हटा दिया गया है
  • अगर आपके दिमाग में चाबी
  • ब्लॉक / को छोड़कर प्रयास करें

जो बेहतर है वह 3 चीजों पर निर्भर है:

  1. क्या शब्दकोश 'सामान्य रूप से कुंजी है' या 'सामान्य रूप से कुंजी नहीं है'
  2. क्या आप शर्तों का उपयोग करना चाहते हैं जैसे कि … और … अन्यथा … और?
  3. शब्दकोश कितना बड़ा है?

और पढ़ें: http://paltman.com/try-except-performance-in-python-a-simple-test/

'इन' या 'अगर' के बजाय कोशिश / ब्लॉक का प्रयोग करें:

 try: my_dict_of_items[key_i_want_to_check] except KeyError: # Do the operation you wanted to do for "key not present in dict". else: # Do the operation you wanted to do with "key present in dict." 

ईएएफपी का उपयोग करने के बारे में (अनुमति से क्षमा पूछना आसान):

 try: blah = dict["mykey"] # key exists in dict except: # key doesn't exist in dict 

अन्य अन्य पोस्ट देखें:

अजगर में अगर बनाम प्रयास करें या

पायथन में सदस्य अस्तित्व के लिए जांच रहा है

print dict.get('key1', 'blah')

मस्तिष्क में मूल्यों के लिए बू को प्रिंट नहीं करेंगे, लेकिन कुंजी 1 के मूल्य को प्रिंट करके लक्ष्य की पूर्ति के लिए इसके अस्तित्व की पुष्टि करने के बजाय।

अजगर में शब्दकोश प्राप्त ('कुंजी', डिफ़ॉल्ट) विधि है। तो आप एक डिफ़ॉल्ट मान सेट कर सकते हैं अगर कोई चाबी नहीं है values = {...} myValue = values.get('Key', None)

टर्नरी ऑपरेटर का उपयोग करना:

 message = "blah" if 'key1' in dict else "booh" print(message) 

अजगर शब्दकोश में __contains__ नामक विधि है यह विधि सत्य वापस लौटाएगी यदि शब्दकोश में कुंजी है और गलत हो जाता है।

  >>> temp = {} >>> help(temp.__contains__) Help on built-in function __contains__: __contains__(key, /) method of builtins.dict instance True if D has a key k, else False. 

सबसे सरल एक है यदि आप जानते हैं कि किस कुंजी (कुंजी नाम) की तलाश है:

 # suppose your dictionary is my_dict = {'foo': 1, 'bar': 2} # check if a key is there if 'key' in my_dict.keys(): # it will evaluates to true if that key is present otherwise false. # do something 

या आप यह भी कर सकते हैं:

 if 'key' in my_dict: # it will evaluates to true if that key is present otherwise false. # do something