मैं एक शब्दकोश है अजगर शब्दकोश से खाली सूचियों को हटाने के लिए एक सुरुचिपूर्ण रास्तापायथन:</p> <pre><code>default = {'a': ['alpha'], 'b': ['beta','gamma'], 'g': []} </code></pre> <p>मैं के रूप में खाली मूल्यों को खत्म करना चाहते हैं: के रूप में
default = {'a': ['alpha'], 'b': ['beta','gamma']}
मैं एक समारोह में लिखा था (निम्नलिखित एक उदाहरण वेब पर मिल)
def remove_empty_keys(d):
for k in d.keys():
try:
if len(d[k]) < 1:
del[k]
except:
pass
return(d)
मैं निम्नलिखित प्रश्न हैं:
1- मैं गलती क्यों यह हमेशा निम्नलिखित रिटर्न नहीं मिला -
remove_empty_keys(default)
{'a': ['alpha'], 'b': ['beta'], 'g': []}
2- वहाँ एक अंतर्निहित समारोह को खत्म/एक बनाने के बिना पायथन शब्दकोश से अशक्त/कोई नहीं/खाली मान हटाना है मूल शब्दकोश की प्रतिलिपि?
आपका प्रश्न खाली सूचियों के साथ 'कोई नहीं' के विचार को मिलाता प्रतीत होता है। यह समझना मुश्किल बनाता है। –
शायद यह कहने का एक बेहतर तरीका होगा "क्या एक शब्दकोश से झूठे मूल्यों को खत्म करने के लिए कोई फ़ंक्शन है" – mgilson
आपकी 'कोशिश करें ... सिवाय इसके कि' खंड आपके द्वारा स्वयं की त्रुटियों को छिपाने के अलावा कोई उद्देश्य नहीं प्रदान करता है। यदि आप वास्तव में कोशिश/छोड़ने का उपयोग करना चाहते हैं, तो आपको हमेशा अपवाद (ओं) निर्दिष्ट करना चाहिए जो आप उम्मीद करते हैं (इस मामले में KeyError)। इस तरह, वे अनजाने में असंबद्ध बग छिपाएंगे। लेकिन इस मामले में, जब तक कि समानांतर धागे में कोड नहीं है जो 'डी' को संशोधित कर रहा है, आपको कभी भी एक महत्वपूर्ण त्रुटि नहीं मिलेगी क्योंकि 'k' * *' d' में होना चाहिए क्योंकि इसे 'd.keys() द्वारा वापस किया गया था '। –