تعديل القاموس التكراري
من الشائع الحاجة إلى حذف عناصر من القاموس أثناء التكرار عليها في نفس الوقت. ومع ذلك، هذه العملية غير مدعومة أصلاً في بايثون.قد يؤدي تعديل القاموس أثناء التكرار عليه إلى حدوث أخطاء. على سبيل المثال، قد يفشل مقتطف التعليمات البرمجية الذي قدمته في Python 3 مع ظهور الخطأ:خطأ وقت التشغيل: تم تغيير حجم القاموس أثناء التكرار.
RuntimeError: dictionary changed size during iteration.
حل بايثون 3 ] &&&]في Python 3، الحل هو إنشاء قائمة مفاتيح من القاموس والتكرار فوق تلك القائمة بدلاً من ذلك. إليك مثال:
# Python 3 أو أعلى لـ k في القائمة (mydict.keys()): إذا كان mydict[ك] == 3: del mydict[k]# Python 3 or higher
for k in list(mydict.keys()):
if mydict[k] == 3:
del mydict[k]
Python 2 Solutionفي Python 2، تقوم طريقة المفاتيح () بإرجاع مكرر، والذي لا يمكن تعديله أثناء التكرار. لتعديل القاموس يمكنك استخدام الطريقة التالية:
# Python 2 لـ k، v في mydict.items(): إذا كان الخامس == 3: del mydict[k]# Python 2
for k, v in mydict.items():
if v == 3:
del mydict[k]
for k في mydict.keys():
إذا كان mydict[ك] == 3:
del mydict[k]for k in mydict.keys():
if mydict[k] == 3:
del mydict[k]
المنهج البديلبدلاً من ذلك، يمكنك استخدام طريقة pop() لحذف العناصر من القاموس أثناء التكرار:
لـ k في القائمة (mydict.keys ()): إذا ك == 3: mydict.pop(k)
لاحظ أن هذا الأسلوب أكثر كفاءة لأنه لا يقوم بإنشاء قائمة إضافية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3