2012-02-21 15 views
9

क्या नीचे दिए गए एक लाइन तरीका है?पायथन डेल यदि एक पंक्ति में शब्दकोश में

myDict = {} 
if 'key' in myDic: 
    del myDic['key'] 

धन्यवाद

+2

पहली बात इस तरह के सवालों के साथ क्या करना: 'dict' डॉक्स पूरी तरह से पढ़ें। –

+0

@ user683111: अगर यह आपके लिए काम करता है तो आपको जवाब स्वीकार करना चाहिए :) – avasal

+2

संभावित डुप्लिकेट [शब्दकोश से कुंजी कैसे निकालें?] (Http://stackoverflow.com/questions/11277432/how-to-remove- ए-की-से-डिक्शनरी) – strongMA

उत्तर

18

आप

myDict.pop(key, None) 
+0

धन्यवाद, ठीक वही है जो मैं चाहता था – scruffyDog

+0

इसे केवल तब ही हटा देना चाहिए जब 'कुंजी' मेरे डिक में है (जो मेरे डिक्ट से अलग है) –

+1

@ मिशेलकिजर्स: क्या आपको सच में लगता है कि यह टाइपो नहीं है? –

0

लिख सकते हैं तो आप इस एक एक लाइनर मानते हैं:

>>> d={1:2} 
>>> if 1 in d: del d[1] 
... 
>>> d 
{} 
+0

नंबर की मदद नहीं हुई। –

+0

कोई चिंता नहीं, पॉप (कुंजी, कोई नहीं) विकल्प के साथ जाएं। –

+2

मैं इसे एक पंक्ति नहीं कहता क्योंकि यह दो पंक्तियां हैं, बस एक पीईपी 8] (http://www.python.org/dev/peps/pep-0008/) द्वारा अनुमत रूप में एक रूप में स्क्रंच किया गया है। दो अन्य कारणों से मैं इसे कभी नहीं करूँगा (ए) यह छोटा और सुंदर नहीं है; (बी) इसे शब्दकोश के नाम और कुंजी को एक बार के बजाय दो बार उल्लेख करने की आवश्यकता है। वही तर्क 'डी [के] के साथ लागू होते हैं यदि डी में अन्यथा बनाम 'd.get (k, v)'। –

2

pop विधि इसके अलावा एक हमेशा explictly __delitem__ विधि कॉल कर सकते हैं - जो del जैसा ही है, लेकिन एक किया जाता है एक बयान के बजाय अभिव्यक्ति की अभिव्यक्ति। चूंकि यह एक अभिव्यक्ति है, यह इनलाइन "अगर" के साथ जोड़ा जा सकता है (सी त्रिगुट ऑपरेटर की पायथन के संस्करण):

d = {1:2} 

d.__delitem__(1) if 1 in d else None 
संबंधित मुद्दे