البرمجة

تكوين وتحديث القواميس في Python باستخدام defaultdict والدوال الكائنية

في البداية، يظهر من الشيفرة البرمجية التي قدمتها أنك تحاول إنشاء قائمة من القواميس باستخدام أسماء متغيرة ديناميكية، ومن ثم قمت بمحاولة تعديل هذه القواميس باستخدام دالة في الصف الخاص بك. ومع ذلك، هناك بعض الأخطاء في الشيفرة تحتاج إلى تصحيح. دعني أقدم لك شرحاً تفصيلياً وتوجيهات حول كيفية تصحيح الأخطاء وتحسين الشيفرة.

أولًا، في الحلقة for الأولى حيث تحاول إنشاء قائمة من القواميس، يمكنك استخدام هيكل البيانات dict مباشرة دون الحاجة إلى إنشاء أسماء متغيرة ديناميكية. يمكنك تحقيق ذلك على النحو التالي:

python
from collections import defaultdict class Stats(object): def __init__(self, name, namedict): self.name = name self.namedict = namedict def update_stats(self, playerdict): self.playerdict = playerdict playerdict['HR'] += 1 return playerdict l = ['a', 'b', 'c'] dict_list = [] # قائمة لتخزين القواميس for x in l: d = defaultdict(int) # استخدام defaultdict مباشرة dict_list.append(d) # إضافة القاموس إلى القائمة print("Name is", d) stats = Stats('stats', dict_list) # الآن لديك قائمة من القواميس تحتوي على defaultdict(int)

ثم، بالنسبة للحلقة for الثانية، يبدو أن هناك خلط بين استخدام أسماء المتغيرات واستخدام الكائن Stats الذي قمت بإنشائه. يمكنك تصحيحها على النحو التالي:

python
for y, d in zip(l, dict_list): stats.update_stats(d) # قم بتحديث القاموس مباشرة باستخدام الكائن stats

هذا الشيفرة البرمجية المعدلة تستخدم الآن هيكل بيانات dict مباشرة وتقوم بتحديث القواميس باستخدام الدالة update_stats التي تنتمي إلى الكائن Stats. بهذا يتم تصحيح الأخطاء وتحسين الشيفرة.

المزيد من المعلومات

بالطبع، دعوني أوسع المحادثة وأقدم مزيد من التوضيحات بشأن الشيفرة البرمجية وبعض المفاهيم الهامة في Python.

أولاً، في الجزء الأول من الشيفرة، لديك قائمة l تحتوي على أسماء مثل ‘a’ و ‘b’ و ‘c’. في حلقة for، أنت تقوم بإنشاء قواميس باستخدام defaultdict(int) وتخزينها في قائمة dict_list. استخدام defaultdict يعني أن أي عنصر يتم الوصول إليه في القاموس سيتم إنشاء قيمة افتراضية (في هذه الحالة، int() يعيد 0) إذا لم يكن موجودًا مسبقًا.

ثم، قمت بإنشاء كائن Stats باسم ‘stats’ وتمرير قائمة القواميس dict_list إليه. هذا يعني أن الكائن Stats الآن يحتوي على متغير namedict الذي يشير إلى القائمة من القواميس.

الآن، في الجزء الثاني، تحاول تحديث القواميس باستخدام دالة update_stats. في الحلقة for، استخدمت zip لدمج l و dict_list معًا، مما يتيح لك الوصول إلى عناصرهما في كل تكرار. ثم استخدمت دالة update_stats لتحديث القاموس الحالي.

يرجى ملاحظة أنه تم تصحيح الخطأ في تحديد اسم الدالة update_stats في الشيفرة البرمجية لتصبح def update_stats(self, playerdict): بدلاً من def update_stats(self, playerdict):.

بهذا، يمكنك الآن فهم كيف تم إنشاء القواميس، وكيف يمكن تحديثها باستخدام الكائن Stats الذي تم إنشاؤه.

زر الذهاب إلى الأعلى