সম্পাদনা করুন:
এই উত্তর পাইথন 3 এর জন্য কাজ করবে না এবং একটি দেবে RuntimeError
।
রানটাইম-এরির: পুনরাবৃত্তির সময় অভিধানের আকার পরিবর্তন হয়েছে।
এটি ঘটে কারণ mydict.keys()
একটি পুনরাবৃত্তির তালিকা দেয় না returns মন্তব্যে নির্দেশিত হিসাবে কেবল mydict.keys()
একটি তালিকাতে রূপান্তর করুন list(mydict.keys())
এবং এটি কাজ করা উচিত।
কনসোলে একটি সাধারণ পরীক্ষা দেখায় যে কোনও অভিধানের পুনরাবৃত্তি করার সময় আপনি কোনও অভিধান পরিবর্তন করতে পারবেন না:
>>> mydict = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> for k, v in mydict.iteritems():
... if k == 'two':
... del mydict[k]
...
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
দেলানানের উত্তরে যেমন বলা হয়েছে, পুনরাবৃত্তিকারী পরবর্তী প্রবেশপথের দিকে যাওয়ার চেষ্টা করলে এন্ট্রি মুছতে সমস্যা হয়। পরিবর্তে, keys()
কীগুলির একটি তালিকা পেতে এই পদ্ধতিটি ব্যবহার করুন এবং এটিতে কাজ করুন:
>>> for k in mydict.keys():
... if k == 'two':
... del mydict[k]
...
>>> mydict
{'four': 4, 'three': 3, 'one': 1}
আইটেমগুলির মানের ভিত্তিতে যদি আপনাকে মুছতে হয় তবে তার items()
পরিবর্তে পদ্ধতিটি ব্যবহার করুন:
>>> for k, v in mydict.items():
... if v == 3:
... del mydict[k]
...
>>> mydict
{'four': 4, 'one': 1}