के साथ किसी शब्दकोश से आइटम को हटाने से मैं कुंजी के मान को निश्चित सीमा से नीचे होने पर एक शब्दकोश से आइटम ड्रॉप करने का प्रयास कर रहा हूं। मैं क्या मतलब है के लिए एक सरल उदाहरण के लिए:लूप
my_dict = {'blue': 1, 'red': 2, 'yellow': 3, 'green': 4}
for color in my_dict:
threshold_value = 3
if my_dict[color] < threshold_value:
del my_dict[color]
print(my_dict)
अब, मैं एक RuntimeError: dictionary changed size during iteration
त्रुटि मिलती है। वहां कोई बड़ी आश्चर्य नहीं है। कारण है कि मैं इस प्रश्न पोस्ट कर रहा हूँ है:
हो, तो एक सुरुचिपूर्ण समाधान एक नया शब्दकोश बनाने की आवश्यकता नहीं है कि (उस के साथ मूल्यों> = सीमा केवल कुंजी रखती है) जानकारी प्राप्त करें।
यहां पाइथन के तर्क को समझने का प्रयास करें। जिस तरह से मैंने इसे स्वयं पढ़ा है: "पहली कुंजी पर जाएं। क्या उस कुंजी का मान < x है? यदि हां - यह कुंजी डेल करें: मान आइटम और शब्दकोश में अगली कुंजी पर जारी रखें, यदि नहीं - जारी रखें कुछ भी किए बिना अगली कुंजी "। दूसरे शब्दों में, पिछली चाबियों के लिए ऐतिहासिक रूप से क्या हुआ, इससे मुझे प्रभावित नहीं होना चाहिए। अतीत के बावजूद, मैं अगले आइटम की प्रतीक्षा कर रहा हूं। मुझे पता है कि यह एक मजेदार है (कुछ बेवकूफ कह सकते हैं, मैं आपको वह दूंगा) लेकिन इस पाश के बारे में पाइथन का "सोचने का तरीका" क्या है? यह क्यों काम नहीं करता है? पाइथन इसे अपने आप से ज़ोर से कैसे पढ़ेगा? बस तथ्य यह है कि अजगर शब्दकोशों हैश तालिकाओं के रूप में लागू किया जाता है के कारण भाषा का एक बेहतर समझ प्राप्त करने की कोशिश ...
जैसा कि मैंने ओपी में कहा था, मैं एक नया नियम नहीं बनाना चाहता हूं। – Optimesh
आपने एक सुरुचिपूर्ण तरीके से पूछा। लेकिन आप जो भी चाहें प्रोग्राम कर सकते हैं। – Daniel