لقد تم إعطاؤك فئة تسمى "CSVParser"، والتي تحتوي على طريقة تسمى "تحليل". وتتمثل المهمة في تنفيذ طريقة "التحليل" بطريقة تمكنها من تحليل خطوط CSV وإرجاع نتيجة تعيين العنوان.

تأخذ الطريقة `parse` ثلاثة معلمات: `lines`، و`start_row` (القيمة الافتراضية هي 1)، و`title_row` (القيمة الافتراضية هي 0).

المعلمة "lines" هي قائمة من السلاسل، حيث تمثل كل سلسلة صفًا في ملف CSV. يتم فصل كل صف بفواصل، حيث يكون الصف الأول هو صف الرأس والصفوف التالية تحتوي على البيانات.

تحدد المعلمة `start_row` رقم الصف الذي يجب أن يبدأ التحليل منه. على سبيل المثال، إذا كان `start_row` يساوي 2، فيجب أن يبدأ التحليل من الصف الثاني (الفهرس 1) من قائمة `الخطوط`.

تحدد المعلمة `title_row` رقم الصف الذي يحتوي على عناوين (رأس) الأعمدة. على سبيل المثال، إذا كان `title_row` يساوي 0، فإن الصف الأول (الفهرس 0) من قائمة `السطور` يحتوي على العناوين.

يجب أن يُرجع الأسلوب `parse` قاموسًا يربط كل عنوان بقائمة من البيانات المقابلة لهذا العنوان. يجب استرداد البيانات من الصفوف الموجودة أسفل صف العنوان.

على سبيل المثال، خذ بعين الاعتبار بيانات CSV التالية:

```
الهوية والاسم والعمر
1، يوحنا، 25
2، إميلي، 30
3، مايكل، 35
```

إذا قمت باستدعاء الأسلوب `parse` مع تعيين معلمة `lines` على `["ID,Name,Age", "1,John,25", "2,Emily,30", "3,Michael,35"] `، يجب أن تقوم الطريقة بإرجاع القاموس التالي:

```
{
    "المعرف": ["1"، "2"، "3"]،
    "الاسم": ["جون"، "إميلي"، "مايكل"]،
    "العمر": ["25"، "30"، "35"]
}
```

لاحظ أن القاموس يربط كل عنوان بقائمة من البيانات المقابلة المستخرجة من الصفوف الموجودة أسفل صف العنوان.

قم بتنفيذ طريقة "التحليل" للفئة "CSVParser" لحل المشكلة. يمكنك افتراض أن عدد العناوين في صف الرأس هو نفس عدد الأعمدة في كل صف لاحق.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}