मेरे पास कुछ पायथन कोड है जो एक KeyError अपवाद फेंक रहा है। अब तक मैं ऑपरेटिंग वातावरण के बाहर पुन: उत्पन्न करने में सक्षम नहीं हूं, इसलिए मैं यहां एक कम परीक्षण केस पोस्ट नहीं कर सकता।"k in d" कैसे गलत हो सकता है, लेकिन "k.keys() में k" सच है?
कोड है कि अपवाद को ऊपर उठाने के इस तरह एक पाश के माध्यम से पुनरावृत्ति है:
for k in d.keys():
if condition:
del d[k]
del[k]
लाइन अपवाद फेंकता है। मैंने इसके आसपास try/except
क्लॉज जोड़ा है और यह निर्धारित करने में सक्षम है कि k in d
गलत है, लेकिन k in d.keys()
सत्य है।
d
की कुंजी पुरानी शैली के वर्ग उदाहरणों के बाध्य तरीके हैं।
कक्षा __cmp__
और __hash__
लागू करती है, इसलिए मैं अपना ध्यान केंद्रित कर रहा हूं।
ठीक है, अगर तुम अब क्या 'k' कारण समस्याएं हो रही है, क्यों तुम सिर्फ नहीं दिख रहा है कि क्या यह' d.keys में मौजूद हैं() 'और' डी' में? – SilentGhost
मुझे स्पष्टीकरण दें, अगर आप पुनरावृत्ति को अनदेखा करते हैं और केवल शब्दकोश का परीक्षण करते हैं, तो वहां एक कुंजी है जिसके लिए 'k in d' सत्य है लेकिन' k.keys() में k 'गलत है? अर्थात। इस मुद्दे पर पुनरावृत्ति अप्रासंगिक है? – katrielalex
क्या आप अपना '__hash__' फ़ंक्शन भी दिखा सकते हैं? – user470379