# العمل مع المصفوفات والقواميس

**مصفوفة** — هي بنية بيانات تخزّن مجموعة من القيم (تُسمّى عناصر المصفوفة)، ويُعرَّف كل عنصر منها بواسطة فهرس. يتم تعريفها باستخدام الأقواس المربعة \[]. على سبيل المثال، العبارة q = \[] تعني أن المتغير q يحتوي على مصفوفة فارغة. إذا كانت q = \[2, 5, 7, 4, 9]، فإن المصفوفة تحتوي على 5 عناصر — وهذا هو طولها. تبدأ فهارس العناصر، التي تمثل مواقعها في المصفوفة، من 0. لذا فإن فهرس العنصر "2" هو 0، وفهرس العنصر "4" في مصفوفتنا هو 3.

<figure><img src="/files/22061b82e8a5311ea98b118b175ceb5702571227" alt=""><figcaption></figcaption></figure>

**مثال:** array=\[1,2,3,4] أو array1=\["mother","father","son","daughter"]

**مثال على الوصول إلى عنصر في مصفوفة:** array\[1] (تُرجِع القيمة 2)

**قاموس** — هي بنية بيانات تمثل مجموعة منظمة بشكل خاص من العناصر التي تخزّن البيانات. تُخزَّن جميع البيانات على شكل أزواج مفتاح-قيمة. يتم الوصول إلى عناصر البيانات باستخدام المفتاح. يجب أن يكون كل مفتاح فريدًا دائمًا داخل قاموس واحد، بينما يمكن تكرار البيانات (القيم) إذا لزم الأمر.

**مثال:** {"SLU":12345,"Name":"Men's t-shirt, white","Size":50,"Price":1000}

**مثال على الوصول إلى عنصر في مصفوفة:** dictionary\["Array"] (تُرجِع القيمة 12345)

يمكن أن تحتوي كلٌّ من المصفوفات والقواميس على تراكيب معقدة أو متداخلة — أي يمكن أن تحتوي إحداها الأخرى. على سبيل المثال:

مصفوفة من القواميس: products=\[{"SKU":12345,"Name":"Men's t-shirt, white","Size":50,"Price":1000},{"SKU":12346,"Name":"Men's t-shirt, white","Size":52,"Price":1000}]

&#x20;التعبير `s = {}` يعني أن المتغير s يحتوي على قاموس لا يحتوي على أي عناصر. يمكننا وضع زوج مفتاح-قيمة فيه، أو حتى عدة أزواج: `s = {"key1":"value1", "key2":"value2","key3":"value3"}` يُحاط كل مفتاح وكل قيمة بعلامتي اقتباس، وتوضع نقطتان رأسيتان بين المفتاح والقيمة، وتُفصل أزواج المفتاح-القيمة بفواصل.

يمكن أن تكون المصفوفات والقواميس متداخلة. لننظر إلى مثال:

`rainbow = [red, orange, yellow, green, light blue, blue, purple]` - هذه مصفوفة.

إذا كتبنا&#x20;

rainbow = {"every":"red","hunter":"orange","wants":" yellow","know":"green","where":"light blue","sits":"blue","pheasant":"purple"}

\- نحصل على قاموس

إذا نظرنا عن قرب إلى قوس قزح، يمكننا أن نرى، على سبيل المثال، أن اللون الأزرق الفاتح أكثر تعقيدًا ويتكوّن من الفيروزي، والأزرق الفاتح، والأزرق الداكن. لنكتب: `light blue = [turquoise,light blue, dark blue]`. والآن لنضمّن مصفوفتنا “blue” داخل القاموس “rainbow”:

rainbow = {"first\_color":"<mark style="background-color:yellow;">red</mark>","<mark style="background-color:blue;">second\_color</mark>":"<mark style="background-color:yellow;">orange</mark>","<mark style="background-color:blue;">third\_color</mark>":"<mark style="background-color:yellow;">yellow</mark>","<mark style="background-color:blue;">forth\_color</mark>":"<mark style="background-color:yellow;">green</mark>","<mark style="background-color:blue;">sixth\_color</mark>":"<mark style="background-color:yellow;">blue</mark>","<mark style="background-color:blue;">last\_color</mark>":"<mark style="background-color:yellow;">purple</mark>"}

فكيف نحدد عنوان عنصر، مثلًا “turquoise”؟&#x20;

وفي المصفوفات، يتم العنونة بواسطة <mark style="background-color:yellow;">**الفهرس**</mark>، لذا فإن عنوان العنصر "turquoise" هو 0.

&#x20;لخّص هذا: **\["where"]\[0]** - هو عنوان العنصر "turquoise".

<div data-with-frame="true"><figure><img src="/files/423d73c5c6c9637041368bd06583912573a92d34" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/0b21d68905143db82dd87ed4d7afdeeea9782137" alt="" width="375"><figcaption></figcaption></figure></div>

## كيفية العمل مع العنونة (JSON)

عند تلقي الردود من خدمات خارجية عبر API، نحصل غالبًا على JSON، وهو يمثل قاموسًا. وغالبًا ما نحتاج إلى تخزين قيمة معينة من هذا القاموس في متغير.

أفضل طريقة لفهم مبدأ العنونة في JSON هي من خلال مثال:<mark style="background-color:green;">{</mark><mark style="background-color:orange;">"suggestions"</mark>: <mark style="background-color:red;">\[{"value": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]</mark><mark style="background-color:green;">}</mark>&#x20;

لدينا هنا قاموس يحتوي على زوج مفتاح-قيمة واحد **suggestions** - المفتاح للمصفوفة: `[{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]`

قيمة **suggestions** المفتاح هي مصفوفة تحتوي على عنصر واحد فقط — وهو قاموس:  `{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}` **suggestions|0** - هو المفتاح للعنصر الأول (والوحيد) في المصفوفة.`{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}`

**suggestions|0|value** - هو المفتاح للقيمة "Belarusian ruble"

{"suggestions": \[{"<mark style="background-color:orange;">value</mark>": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]}

أطول مسار للمفتاح في هذا JSON هو: **suggestions|0|data|strcode** - هو المفتاح لـ AED

<div data-with-frame="true"><figure><img src="/files/4e0e80191f7f8de3d23f9c9a150cb5a2721ab801" alt="" width="563"><figcaption></figcaption></figure></div>

{"suggestions": \[{"value": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "<mark style="background-color:orange;">strcode</mark>": "<mark style="background-color:red;">AED</mark>", "name": "Dirham", "country": "UAE"}}]}

تُفصل المفاتيح بواسطة خط عمودي. إذا احتوى JSON على مصفوفة، فإن الوصول إلى عناصرها يتم بواسطة الفهرس، بدءًا من 0، ويُكتب أيضًا باستخدام خط عمودي. يبدأ فهرسة المصفوفة من 0.

في العنونة، تُعامل الأرقام مثل السلاسل النصية والعكس صحيح. على سبيل المثال، تُعد '6' و 6 متساويتين.

بالإضافة إلى ردود API، يمكن أيضًا استخدام المصفوفات والقواميس لتخزين البيانات بشكل مريح.

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

مثال آخر هو عندما تحتاج إلى تخزين عدد النقاط لكل لاعب في لعبة جماعية. يمكنك استخدام قاموس لهذا الغرض، حيث تكون المفاتيح هي معرّفات المستخدمين والقيم هي نقاطهم.

أحيانًا، يكون من الضروري تعديل مصفوفة أو قاموس. الدوال الموضحة في هذه المقالة مصممة لهذا الغرض بالضبط. تعمل معظم الطرق الموضحة أدناه مع كلٍّ من المصفوفات والقواميس.

## العمل مع المصفوفات

### كيفية إنشاء مصفوفة

إنشاء مصفوفة - التصريح عن مصفوفة

**array\_name = \[]**

### كيفية مسح مصفوفة

مسح المصفوفة هو عمليًا نفسه التصريح عن مصفوفة فارغة:

**array\_name = \[]**

### كيفية الوصول إلى عنصر في مصفوفة

<details>

<summary>الوصف</summary>

**name\[index] -** الوصول إلى عنصر في مصفوفة بواسطة الفهرس أو بواسطة القيمة

</details>

<details>

<summary>مثال</summary>

لنلقِ نظرة على بعض الأمثلة للعمل مع المصفوفات:

**مثال على الوصول إلى عنصر مصفوفة بواسطة فهرسه:**

<div data-with-frame="true"><figure><img src="/files/c52f714738fe50943eaa8c86ce5774fae080d954" alt="" width="563"><figcaption></figcaption></figure></div>

#### مثال على الحصول على آخر عنصر في المصفوفة:

<div data-with-frame="true"><figure><img src="/files/c6d9b0f7226c2b30e582fdf99dfcf2857887b0b7" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
/*الوصول بواسطة الفهرس*/
arrayI = [1, "2", 3, 4, 5]
k=arrayI[3]
/*الوصول بواسطة الفهرس من مصفوفة متداخلة*/
arrayV = [[1, "2", 4, 5], "2", 3, 4, 5]
v=arrayV[0][1]

/*مثال على الحصول على آخر عنصر*/
array = [1, "2", 3, 4, 5]
/*الحصول على آخر عنصر في المصفوفة*/
last = array[-1]
```

</details>

### كيفية استبدال قيمة في مصفوفة

<details>

<summary>الوصف</summary>

**name\[index] =** **value** - استبدال عنصر في المصفوفة بواسطة فهرس معيّن

</details>

<details>

<summary>مثال</summary>

**مثال:**

لاستبدال قيمة عنصر معيّن في المصفوفة، استخدم الصياغة التالية: *array\_name\[index] = value*

<div data-with-frame="true"><figure><img src="/files/4b539a6134129e98a0558eaddd531d06005f3812" alt="" width="563"><figcaption></figcaption></figure></div>

الإجابة:

<div data-with-frame="true"><figure><img src="/files/a73faa1aa07f8ddad4404d16267ce11201baf637" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
array = [1, "2", 3, 4, 5]

/*استبدال في مصفوفة\قاموس*/
array[2] = 888

/*إضافة في قاموس   dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new

/*استبدال في مصفوفة\قاموس إلى عدد*/
array[3] = int('888')
dicts['a'] = int('555')
```

</details>

### كيفية التحقق مما إذا كان عنصر موجودًا في مصفوفة

<details>

<summary>الوصف</summary>

**in\_array(mass, value)** - للتحقق مما إذا كان عنصر موجودًا في مصفوفة.

**المعلمات:** \ <mark style="color:red;">!</mark> **mass -** مصفوفة \ <mark style="color:red;">!</mark> **value -** القيمة المراد البحث عنها

تُرجِع True أو False اعتمادًا على ما إذا كانت القيمة قد وُجدت أم لا.

</details>

<details>

<summary>مثال</summary>

مثال:

<div data-with-frame="true"><figure><img src="/files/9d73f62909b99bcc49b5a8c3df1bfbf03fc55169" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = ["Mike", "Peter", "Helen"] 
q = if(in_array(s, 'Ann'), 'Found', 'Another string')
```

</details>

### كيفية معرفة طول المصفوفة

<details>

<summary>الوصف</summary>

**arr\_len(mass)** - لمعرفة طول المصفوفة

المعلمة:\ <mark style="color:red;">!</mark> **mass -**  *مصفوفة*&#x20;

النتيجة: تُرجِع عددًا - طول المصفوفة.

{% hint style="warning" %}
كن حذرًا عند تمرير المعلمات إلى الدالة! إذا استُدعيت بدون معلمات، فإنها تُرجِع 0؛ وإذا كانت المعلمة ليست مصفوفة ولا قاموسًا، فإنها تُرجِع -1.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال على الاستخدام:

<div data-with-frame="true"><figure><img src="/files/6275875ddb68c8af52421028547316f7e03cd274" alt=""><figcaption></figcaption></figure></div>

النتيجة:

<div data-with-frame="true"><figure><img src="/files/b87ffc2b9c26e6f582240219dfa6a7c75e8ced56" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = ["Mike", "Peter", "Helen"] 
q = if(arr_len(s) > 5, 'Group is full', 'Join our team!')
```

</details>

### كيفية إدراج عنصر في نهاية المصفوفة؟

<details>

<summary>الوصف</summary>

**append(mass, element, priznak)** - لإدراج عنصر في نهاية المصفوفة.&#x20;

المعلمات:

<mark style="color:red;">!</mark> **mass -** مصفوفة\ <mark style="color:red;">!</mark> **element -** العنصر المراد إدراجه\
**priznak** - مؤشر يوضح ما إذا كانت مصفوفة أم قاموسًا

تُرجِع المصفوفة مع إضافة القيمة في النهاية. لتحديث المصفوفة الأصلية، استخدم الإسناد: **mass = append(mass, element, priznak)**&#x20;

{% hint style="warning" %}
&#x20;افتراضيًا، تُدرج البيانات كسلاسل نصية. **إذا كنت بحاجة إلى إدراج مصفوفة أو قاموس، فمرّر المعلمة الإضافية True**. وهذا يشير إلى أنك تُدرج JSON.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال على الاستخدام:

<div data-with-frame="true"><figure><img src="/files/f498612450e1e4f624439f95362860609e6074b8" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/dcb1af9e09c63ce44f5992d6c8fc55fa04623d2a" alt="" width="375"><figcaption></figcaption></figure></div>

مثال على الإضافة إلى مصفوفة والحذف منها:

<div data-with-frame="true"><figure><img src="/files/c9f8b0b6eb1cfdf5a2e24e4093c1b61d4fc2c30c" alt="" width="563"><figcaption><p>في هذا المثال، تتم إضافة عنصر إلى المصفوفة project.vibpzdr، وتتم إزالة القيمة <code>p</code> من المصفوفة project.pzdr</p></figcaption></figure></div>

مثال على إنشاء مصفوفة بداخلها مصفوفات:

<div data-with-frame="true"><figure><img src="/files/2bfd12987fedd887a267b3dee6cc51df26126a16" alt="" width="563"><figcaption></figcaption></figure></div>

نتيجة تنفيذ الدالة:

<div data-with-frame="true"><figure><img src="/files/a96c16ea6ddf1cc63432e83d2155f93ca8880485" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = ["Mike", "Peter", "Helen"]
q = append(s, 'Max')
```

</details>

### كيفية إدراج قيمة في موضع محدد في مصفوفة

<details>

<summary>الوصف</summary>

**insert(mass, index, value, priznak)** - لإدراج عنصر في موضع محدد داخل المصفوفة.

المعلمات: \ <mark style="color:red;">!</mark> **mass -** مصفوفة\ <mark style="color:red;">!</mark> **index -** موضع الإدراج\ <mark style="color:red;">!</mark> **value -** value\
**indicator** - مؤشر إضافة إلى مصفوفة أو قاموس.

النتيجة:\
تُرجِع مصفوفة مع القيمة المضافة في الموضع المحدد. وبعبارة أخرى، لإضافة القيمة إلى المصفوفة نفسها، استخدم الأمر بالشكل التالي:  **mass = insert(mass, index, value, indicator)**&#x20;

{% hint style="warning" %}
افتراضيًا، تُدرج البيانات كسلاسل نصية. **إذا كنت بحاجة إلى إدراج مصفوفة أو قاموس، فمرّر المعلمة الإضافية True**. وهذا يشير إلى أنك تُدرج JSON..
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال:

<div data-with-frame="true"><figure><img src="/files/7ebcd75278848ecdeb2707590c5cbf730f3aa412" alt="" width="563"><figcaption></figcaption></figure></div>

النتيجة:

لننظر إلى مثال أكثر تعقيدًا - إضافة قاموس t إلى المصفوفة s:

<figure><img src="/files/4143f2c2c07ddae140267912f0ccf6a6fbc12270" alt=""><figcaption></figcaption></figure>

في الدالة، حددنا أننا نريد إضافة قاموس إلى الموضع 1. لننظر إلى النتيجة:

<figure><img src="/files/6d2e248717867b40e7da5c7f69224d8950ac31d3" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = ["Mike", "Peter", "Helen"]
q = insert(s, 1, 'Max')
```

</details>

### كيفية حذف عنصر من المصفوفة

del() | del | remove()

<details>

<summary>الوصف</summary>

<mark style="background-color:blue;">**بواسطة الفهرس**</mark>

**del(mass, key)** - يزيل عنصرًا من المصفوفة بواسطة فهرسه.&#x20;

المعلمات: \ <mark style="color:red;">!</mark> **mass -** اسم المصفوفة؛\ <mark style="color:red;">!</mark> **key -** فهرس القيمة المراد حذفها

تُرجِع مصفوفة جديدة مع إزالة العنصر؛ وتبقى المصفوفة الأصلية دون تغيير. لحذف وتحديث المصفوفة نفسها، استخدم الأمر مثل: \
**mass = del(mass, key)**

{% hint style="warning" %}
إذا كانت مصفوفتك تحتوي على أرقام وتريد إزالة عنصر بواسطة قيمته، فاستخدم الدالة remove().&#x20;
{% endhint %}

**del name\['index']** - إزالة قيمة من مصفوفة بواسطة الفهرس

المعلمات: \ <mark style="color:red;">!</mark> **name-** اسم المصفوفة؛\ <mark style="color:red;">!</mark> **index-** فهرس القيمة المراد حذفها

<mark style="background-color:blue;">بواسطة القيمة</mark>

**remove(mass, value)** - لحذف قيمة من *مصفوفة*.&#x20;

المعلمات: \ <mark style="color:red;">!</mark> **mass -** اسم المصفوفة؛ \ <mark style="color:red;">!</mark> **value -** القيمة المراد إزالتها من المصفوفة

النتيجة:\
تُرجِع مصفوفة معدلة مع بقاء المصفوفة الأصلية دون تغيير. لإزالة عنصر وتحديث المصفوفة نفسها، استخدم الأمر بالشكل التالي:\
**mass = remove(mass, key)**

</details>

<details>

<summary>أمثلة</summary>

مثال على إزالة عنصر بواسطة الفهرس:

<div data-with-frame="true"><figure><img src="/files/72244ba6d0c0b7829ee904f209ab3fe6e58ba746" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/42f0744f98cc8465c6c56377c86af6bafeff3ca9" alt="" width="375"><figcaption></figcaption></figure></div>

مثال على إزالة عنصر من المصفوفة بواسطة قيمته:

<div data-with-frame="true"><figure><img src="/files/9b6b52c86de35a71a7aa4b684b165def41e19df6" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/82e79071d1beb3ab7f470b05a3811657f7d231ac" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
/*إزالة عنصر من المصفوفة بواسطة فهرسه:*/
array = ["1",2, 3, "4"]
del array['1']

array1 = ["1",2, 3, "4"]
array1=del(array1,0)


/*إزالة عنصر من المصفوفة بواسطة قيمته:*/
array = ["1",2, 3, "4"]
array=remove(array, '4') 

array1 = ["1",2, 3, "4"]
array1=remove(array1, 2) 
```

</details>

### كيفية الحصول على موضع عنصر في مصفوفة

<details>

<summary>الوصف</summary>

**index(mass, value)**

المعلمات: \ <mark style="color:red;">**!**</mark> **mass -** اسم المصفوفة \ <mark style="color:red;">**!**</mark>**&#x20;value -** القيمة التي يجب تحديد موضعها.

إذا لم يكن العنصر موجودًا في المصفوفة، ستُرجِع الدالة -1.

</details>

<details>

<summary>أمثلة</summary>

مثال على تحديد موضع عنصر في مصفوفة:

<div data-with-frame="true"><figure><img src="/files/aa0e1852e623112d7288335a1d60f82c4ddba575" alt="" width="563"><figcaption></figcaption></figure></div>

لنلقِ نظرة أقرب على النتيجة بالتفصيل:

<div data-with-frame="true"><figure><img src="/files/942eb9322910c353a1e050887174752c2ef6bea6" alt="" width="375"><figcaption></figcaption></figure></div>

كما نرى، بما أن الرقم 5 غير موجود في المصفوفة، فقد أعادت الدالة -1.

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
array = ["1",2, 3, "4"]
search1=index(array,"1")
search2=index(array,5)
```

</details>

### كيفية تحويل مصفوفة إلى نص مقروء للبشر

<details>

<summary>الوصف</summary>

**massive\_to\_text(massive, header, numbered,delimiter1,delimiter2)**

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;massive** – المصفوفة المراد عرضها،\
**header** – عنوان سيظهر في بداية الناتج\
**numbered** – إذا مُررت أي قيمة، فسيتم ترقيم عناصر المصفوفة\
**delimiter1** – الحرف الموضوع في نهاية كل سطر عنصر (الافتراضي هو ‘;’)،\
**delimiter2** – الحرف المستخدم بعد رقم العنصر عند تفعيل الترقيم (الافتراضي هو ‘)’)

</details>

<details>

<summary>أمثلة</summary>

مثال بسيط:

وبالتالي ستُعرض المصفوفة على شكل قائمة مرقمة:

<div data-with-frame="true"><figure><img src="/files/8e4e4443b2f9e9df45d49fd855607d36394ae06e" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
Array1 = [1, 2, 3, "a", "b", "c"] 
text = array_to_text(Array1, 'title', 1) 
```

</details>

### كيفية استبعاد مصفوفة من أخرى

<details>

<summary>الوصف</summary>

**except\_arr(mas1, mas2)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;mas1** - المصفوفة التي ستُستبعد منها العناصر،\ <mark style="color:red;">**!**</mark>**&#x20;mas2** - المصفوفة التي تحتوي على العناصر المراد استبعادها

</details>

<details>

<summary>أمثلة</summary>

لننظر إلى المثال:

<div data-with-frame="true"><figure><img src="/files/dbe88f48a3de15efbcfcf8abf6542729ce9bbe1b" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2f8a432cf1910624639b2bffd786696591a8085b" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s1 = [1, 2, 3]
s2 = [2, 3]
s3 = except_arr(s1, s2)
```

</details>

### كيفية إيجاد تقاطع المصفوفات

<details>

<summary>الوصف</summary>

**cross\_arr(mas1, mas2)**

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;mas1** - المصفوفة المراد البحث فيها\ <mark style="color:red;">**!**</mark>**&#x20;mas2** - المصفوفة التي تحتوي على العناصر المطلوب البحث عنها

</details>

<details>

<summary>أمثلة</summary>

<div data-with-frame="true"><figure><img src="/files/47f7e0a33d9f1b9fdcfd2b5a11c5061e6b5e178e" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/6463712afddd3e874a456ad5bb8f24bfa249b522" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s1 = [1, 2, 3]
s2 = [2, 3]
s3 = cross_arr(s1, s2)

mas1 = ["didn't", "except,", "that", "everything", "is", "so", "simple.", "thanks"]
mas2 = ["everything", "thanks"]
mas3 = cross_arr(mas1, mas2)
```

</details>

### **كيفية دمج المصفوفات**

<details>

<summary>الوصف</summary>

لا توجد دالة مدمجة مخصصة لدمج المصفوفات، لكن يمكن فعل ذلك بسهولة:

لدمج المصفوفات، نفّذ عملية ربط السلاسل النصية، ثم استبدل ']\[' بفاصلة ','

</details>

<details>

<summary>أمثلة</summary>

هذا مثال في حقل Calculator

<div data-with-frame="true"><figure><img src="/files/5783064a28fa6e86f33af26478d5a4f37018dd10" alt="" width="563"><figcaption></figcaption></figure></div>

هذا مثال على عمل بوت

<div data-with-frame="true"><figure><img src="/files/c7c0f7561819305a374ca78a1b8b1dafab196b4f" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
a = [1,2,3,4] 
b = [5,6,7] 
sum = a + b 
answer = replace(sum, '][', ',') 
```

</details>

### كيفية جمع عناصر المصفوفة

<details>

<summary>الوصف</summary>

**sum\_array(array)**

**المعلمات:**

**مصفوفة** - المصفوفة التي يجب جمع عناصرها

{% hint style="warning" %} <mark style="color:red;">**انتباه!**</mark>**&#x20;تعمل الدالة مع مصفوفات بتنسيق محدد.**

الصيغ المقبولة: - \[1,2,3,4] أو ‘\[1,2,3,4]’. \
إذا احتوت المصفوفة على أرقام ممثلة كسلاسل نصية، فيجب وضعها بين علامتي اقتباس مزدوجتين — على سبيل المثال، \[1,2,3,”-4”].  \
إذا احتوت المصفوفة على سلاسل أبجدية، ستفشل عملية الحساب.

مثال على استخدام غير صحيح:\
mas = \[1,2,3,"a"] \
result = sum\_array(mas)

سيؤدي هذا إلى خطأ: **المصفوفة تحتوي على عناصر غير مدعومة**
{% endhint %}

</details>

<details>

<summary>أمثلة</summary>

<div data-with-frame="true"><figure><img src="/files/965c90a0d5dbef5df46ada861bff57e850547e9f" alt="" width="563"><figcaption></figcaption></figure></div>

النتيجة:

<div data-with-frame="true"><figure><img src="/files/ea68477fd98a8d38f5935bbfec8bf7cbefcf252a" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/bffa54a3c4c3e7d68ded4fb5e9e1919f46c9936f" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
mas = [1,2,3,4] 
result = sum_array(mas) 
```

</details>

### كيفية خلط عناصر المصفوفة

<details>

<summary>الوصف</summary>

**shuffle\_massive(massive**

المعلمات:

**massive** - المصفوفة التي يجب خلط عناصرها.

</details>

<details>

<summary>أمثلة</summary>

<div data-with-frame="true"><figure><img src="/files/c68ab1b4bc84cd106216e42e7c619696e053e8f6" alt="" width="563"><figcaption></figcaption></figure></div>

نتائج تنفيذ الدالة:

<div data-with-frame="true"><figure><img src="/files/1f7879184c5bfc8916dfb9a5214613246d4ba483" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
Massive1 = [1, 2, 3, "a", "b", "c"]
Massive2 = shuffle_massive(Massive1) 
```

</details>

### لترتيب المصفوفات والقواميس&#x20;

sort() | sort\_by\_value()

<details>

<summary>الوصف</summary>

<mark style="background-color:blue;">**الترتيب في مصفوفة أو قاموس**</mark>&#x20;

**sort(mass, b)** - يرتب المصفوفة حسب القيمة، والقاموس حسب المفتاح

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;mass** - مصفوفة/قاموس\
**b** - ترتيب الفرز (False – تصاعدي (افتراضي)، True – تنازلي)

<mark style="background-color:blue;">**ترتيب القاموس حسب قيمته**</mark>

**sort\_by\_value(dict, b) -** يرتب القاموس حسب القيم.

المعلمات:\ <mark style="color:red;">**!**</mark>**&#x20;dict**- قاموس\
**b** - ترتيب الفرز (False – تصاعدي (افتراضي)، True – تنازلي)

</details>

<details>

<summary>مثال</summary>

مثال على ترتيب مصفوفة ترتيبًا تنازليًا وقاموس ترتيبًا تصاعديًا:

<div data-with-frame="true"><figure><img src="/files/551e8f5bac5dec5d9aeec0812af1a53e34812c43" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/466999e1f57765668fb869aafc1423168901572f" alt="" width="375"><figcaption><p>نتيجة الترتيب</p></figcaption></figure></div>

ترتيب قاموس حسب القيم:

<figure><img src="/files/49fe1998ebc428109008ca6e8d4180fba90681a9" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/29bcd5e36968c68c75c6f475b7bab74f29ad2373" alt="" width="375"><figcaption><p>نتيجة الترتيب</p></figcaption></figure>

</details>

### تحويل مصفوفة/قاموس إلى أزرار

**tools\_make\_button\_str\_checker() | tools\_check\_user\_input()**

<details>

<summary>الوصف</summary>

<mark style="background-color:blue;">**تحويل مصفوفة/قاموس إلى أزرار**</mark>

tools\_make\_button\_str\_checker(values\_list, key, in\_line, button\_type, checker\_with\_numbers)

المعلمات:

<mark style="color:red;">**!**</mark> values\_list - مصفوفة من السلاسل النصية أو القواميس التي ستُستخدم بياناتها لبناء لوحة مفاتيح أو قائمة مرقمة

key - المفتاح الذي سيتم به الاختيار من مصفوفة القواميس

in\_line - عدد الأزرار في كل صف (الافتراضي: 1)

button\_type - نوع الأزرار (الافتراضي: لوحة مفاتيح رد). \
القيم الممكنة:\
0 - لوحة مفاتيح رد,\
1 - لوحة مفاتيح داخلية (أزرار في النص)

checker\_with\_numbers - ما إذا كان يجب إضافة أرقام الأزرار إلى مصفوفة "checker". \
القيم الممكنة:\
0 - لا تضف أرقامًا، \
1 - أضف أرقامًا (الافتراضي: 1 – أضف أرقامًا)

نتيجة الدالة — قاموس بالشكل:

{"**numbered\_list**": "1. T-shirts\n2. Shorts\n3. Socks\n4. Caps\n","**buttons**":\[{"type":"inline","text":"T-shirts","line":0,"index\_in\_line":0},{"type":"inline","text":"Shorts","line":0,"index\_in\_line":1},{"type":"inline","text":"Socks","line":1,"index\_in\_line":0},{"type":"inline","text":"Caps","line":1,"index\_in\_line":1}],"**checker**":"T-shirts;1;Shorts;2;Socks;3;Caps;4;"}

يمكن بعد ذلك إدراج قيم القاموس في الحقول داخل المُنشئ:

<div data-with-frame="true"><figure><img src="/files/b13cedf61d33ec32b9c9e2d39c1f094db1acbca6" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/f9201ba964c4d2050723f8326d50b9b378dc9526" alt="" width="375"><figcaption></figcaption></figure></div>

<mark style="background-color:blue;">**الحصول على قيمة من القاموس بناءً على اختيار العميل**</mark>&#x20;

**tools\_check\_user\_input(values\_list, user\_input, key, return\_key)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;values\_list** - مصفوفة من السلاسل النصية أو القواميس التي ستُستخدم بياناتها لبناء لوحة مفاتيح أو قائمة مرقمة\ <mark style="color:green;">مثال على قاموس:</mark> \[{"text":"T-shirts","price":100},{"text":"Shorts","price":150},{"text":"Socks","price":20},{"text":"Caps","price":50}]\ <mark style="color:red;">**!**</mark>**&#x20;user\_input** - القيمة التي أدخلها المستخدم من إحدى القيم الموجودة في values\_list\ <mark style="color:green;">مثال على القيمة:</mark> Caps\
**key** - المفتاح المستخدم للاختيار من مصفوفة القواميس values\_list\ <mark style="color:green;">مثال على المفتاح:</mark> text\
**return\_key** - القيمة التي تُرجَع للمفتاح المحدد من values\_list\ <mark style="color:green;">مثال على القيمة المرجعة:</mark> price

</details>

<details>

<summary>مثال</summary>

لنشرح استخدام الدالة بمثال سلة تسوق:

1.عرّف مصفوفة وحوّلها إلى قائمة مرقمة وأزرار وقائمة بالقيم الممكنة (للتطبيقات بدون أزرار) باستخدام الدالة tools\_make\_button\_str\_checker().

<div data-with-frame="true"><figure><img src="/files/563891706da342a6169c179b5bf50c0392558e50" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/04c861dc17aa0b495c9159b2dc33f7118ea59080" alt="" width="375"><figcaption><p>نتيجة استخدام <strong>tools_make_button_str_checker()</strong> الدالة</p></figcaption></figure></div>

2.استخدم القيم obtained buttons و numbered\_list لتمكين اختيار المنتج:

<div data-with-frame="true"><figure><img src="/files/9c6c91e47d0f11a7ce2fa7fdedbf0575dbf5f01b" alt=""><figcaption></figcaption></figure></div>

3.استخدم قائمة التحقق من القيم الممكنة للتحقق من إدخال العميل:

<div data-with-frame="true"><figure><img src="/files/cd66f8419eb51a26b89e899a8fdf45b321e4dcf3" alt="" width="563"><figcaption></figcaption></figure></div>

4.وأخيرًا، اعرض سعر المنتج المحدد للعميل. ومن الملائم فعل ذلك باستخدام الدالة tools\_check\_user\_input()

<div data-with-frame="true"><figure><img src="/files/05fd2bb45ee519c1864c05764284af4415aa8d34" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
list = [{"text":"T-shirts","price":100},{"text":"Shorts","price":150},{"text":"Socks","price":20},{"text":"Caps","price":50}]
res = tools_make_button_str_checker(list, "text", "2", "1")
numbered_list = res['numbered_list']
buttons = res['buttons']
checker = res['checker']

res_check = tools_check_user_input(list, user_input, 'text', 'price')
```

</details>

### تحديد البيانات من مصفوفة

<details>

<summary>الوصف</summary>

**array\_slice(array, start\_index, end\_index)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;مصفوفة** - المصفوفة \ <mark style="color:red;">**!**</mark>**&#x20;start\_index** - بداية الجزء المقتطع \
**end\_index** - نهاية الجزء المقتطع (الافتراضي: حتى النهاية)

</details>

<details>

<summary>مثال</summary>

لنحدد مصفوفة فرعية تبدأ من العنصر الأول:

<div data-with-frame="true"><figure><img src="/files/fd4f763f8d650fcd39a736f855dcceb8257acf8c" alt="" width="563"><figcaption><p>مثال على استخدام array_slice()</p></figcaption></figure></div>

&#x20;ستكون res = \["Shorts", "Socks", "Caps"]&#x20;

مثال آخر على تحديد مصفوفة فرعية من العنصر 0 إلى العنصر 2 من المصفوفة:

<div data-with-frame="true"><figure><img src="/files/30c00d68184a22fa8860557e4af7769ce6696c9e" alt="" width="563"><figcaption><p>مثال على استخدام array_slice()</p></figcaption></figure></div>

&#x20;ستكون res = \["T-shirts", "Shorts"]

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
list = ["T-shirts", "Shorts", "Socks", "Caps"] 
res = array_slice(list, 1)

res = array_slice(list, 0, 2)
```

</details>

### فكّ عناصر المصفوفة

<details>

<summary>الدالة</summary>

unpack\_list(array, var\_name) - تقوم هذه الطريقة بالتكرار على المصفوفة وإنشاء متغير منفصل لكل عنصر في المصفوفة بأسماء مثل var1 و var2 و var3 وما إلى ذلك.&#x20;

<mark style="color:red;">**!**</mark> array - معلمة مطلوبة، وهي مصفوفة من العناصر

var\_name - معلمة اختيارية، وهي سلسلة نصية. إذا تم توفيرها، فستُستخدم لتسمية العناصر المفكوكة. أمثلة:

إذا تم توفير var\_name، فستُكوَّن أسماء المتغيرات باستخدام var\_name

يجب أن يتوافق var\_name مع قواعد تسمية المتغيرات.

</details>

<details>

<summary>مثال</summary>

**مثال 1:**

`array1 = ["one", "two", "three"]`

`ans1 = unpack_list(array1)`

**النتيجة** - تم إنشاء متغيرات منفصلة:

`var1 = 'one'`

`var2 = 'two'`

`var3 = 'three'`

**مثال 2:**

`array2 = ["one", "two", "three"]`

`var_name = 'custom'`

`ans2 = unpack_list(array2, var_name)`

**النتيجة -** تم إنشاء متغيرات منفصلة:

`custom1 = 'one'`

`custom2 = 'two'`

`custom3 = 'three'`

</details>

### كيفية إرجاع قائمة بدون عناصر مكررة

<details>

<summary>الوصف</summary>

remove\_duplicates(array) - تُرجِع قائمة بدون عناصر مكررة.

<mark style="color:red;">**!**</mark> array - معلمة مطلوبة. القائمة الأصلية للعناصر مع التكرارات.

</details>

<details>

<summary>مثال</summary>

مثال:

arr = \[1, 2, 5, 1, 5, 3]

new\_arr = remove\_duplicates(arr)

النتيجة - ستُسنَد القائمة \[1, 2, 5, 3] إلى المتغير new\_arr.

</details>

### كيفية إنشاء قاموس

<details>

<summary>الوصف</summary>

إنشاء قاموس - التصريح عن قاموس

**name\_dictionary = {}**

</details>

### كيفية مسح قاموس

<details>

<summary>الوصف</summary>

المسح - ليس أكثر من التصريح عن قاموس فارغ.

**name\_dictionary = {}**

</details>

### كيفية الحصول على قيمة القاموس بواسطة المفتاح

<details>

<summary>الوصف</summary>

**name\[key] -** الحصول على عنصر من القاموس بواسطة المفتاح

</details>

<details>

<summary>أمثلة</summary>

**مثال على العمل مع قاموس:**

&#x20;في هذه الحالة تحديدًا، نصل إلى القيمة بواسطة المفتاح "a". لاسترجاع قيمة من قاموس باستخدام مفتاح محدد، استخدم الصيغة التالية: name\_dictionary\["key"]

<div data-with-frame="true"><figure><img src="/files/2164fb4a13dc607df6afc33a3784fcb075e2fed9" alt="" width="563"><figcaption></figcaption></figure></div>

الإجابة:

<div data-with-frame="true"><figure><img src="/files/8ce2e3983e1df5ec4615ec3317052a178c018c44" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
dicts = {"a": "11", "d": "hi"}
/*الحصول من القاموس*/
aa = dicts["a"]
```

</details>

### كيفية الحصول على قائمة مفاتيح من قاموس

<details>

<summary>الوصف</summary>

**dict\_keys\_to\_array(data)** - للحصول على قائمة بمفاتيح قاموس البيانات

</details>

<details>

<summary>أمثلة</summary>

**مثال:** الحصول على قائمة بجميع مفاتيح القاموس

<div data-with-frame="true"><figure><img src="/files/9baf5886afb4153f39202d76bcbc12c6d666c851" alt="" width="563"><figcaption></figcaption></figure></div>

**الإجابة:**&#x20;

<div data-with-frame="true"><figure><img src="/files/23b28c28f8884b31dec79504ebf95856c4eeb8a3" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
v={"A1":"orange","A2":"apricot","A3":"tangerine","A4":"apple","A5":"pear","A6":"kiwi","A7":"banana","A8":"peach"} 
key= dict_keys_to_array(v)
```

</details>

### كيفية الحصول على قائمة بالقيم من قاموس

<details>

<summary>الوصف</summary>

**dict\_values\_to\_array(data)** - للحصول على قائمة بالقيم من قاموس

</details>

<details>

<summary>أمثلة</summary>

مثال:

<div data-with-frame="true"><figure><img src="/files/114773c8bac8c17f5d818bf3834eaee484257d76" alt="" width="563"><figcaption></figcaption></figure></div>

الإجابة:

<div data-with-frame="true"><figure><img src="/files/69628f6aaa5fb36e06ccd7a12099b6d37b734965" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
v={"A1":"orange","A2":"apricot","A3":"tangerine","A4":"apple","A5":"pear","A6":"kiwi","A7":"banana","A8":"peach"}
value= dict_values_to_array(v)
```

</details>

### كيفية الحصول على القيم من قائمة القاموس حسب المفتاح المحدد

<details>

<summary>الوصف</summary>

**get\_values\_by\_key(data, key)** - يتيح لك الحصول على القيم من قائمة القاموس حسب المفتاح المحدد. يعيد قائمة بالقيم.

</details>

<details>

<summary>مثال</summary>

مثال: الحصول على القيم من قائمة من القواميس حسب المفتاح

<div data-with-frame="true"><figure><img src="/files/1404311e16eaad401f9ef3949faa1d0fa564c740" alt="" width="563"><figcaption></figcaption></figure></div>

الإجابة:

<div data-with-frame="true"><figure><img src="/files/83b335c52c8d1f1a73ac455e2a3b44ff565d25b6" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
data = [{"Product": "Product№1", "Price": 1500}, {"Product": "Product№2", "Price": 6000}]
key = "Product"
result = get_values_by_key(data, key)
```

</details>

### كيفية استبدال قيمة في قاموس&#x20;

<details>

<summary>الوصف</summary>

nam&#x65;**\['key'] = value** - استبدال قيمة عنصر القاموس بواسطة المفتاح المحدد. إذا تم تحديد مفتاح غير موجود، فسيتم إضافة عنصر قاموس جديد.

</details>

<details>

<summary>الوصف</summary>

**مثال:**

لاستبدال قيمة عنصر معين في المصفوفة، اكتب تعيينًا مثل arra&#x79;*\_name\[index] = value or dictionary\_name*\[key] = value

<div data-with-frame="true"><figure><img src="/files/34177fa9600c451577af710113f4aea184c42bf4" alt=""><figcaption></figcaption></figure></div>

الإجابة:&#x20;

<div data-with-frame="true"><figure><img src="/files/f852295fae827ae3bc2a643eff2098989bc5ee58" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
dicts = {"a": "11", "d": "hi"}

/*استبدال في قاموس*/
dicts['d'] = AAAAA

/*إضافة في قاموس   dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new

/*استبدال في قاموس برقم*/
dicts['a'] = int('555')
```

</details>

### كيفية إضافة قيمة إلى قاموس

<details>

<summary>الوصف</summary>

**dictionary\_name*****\['key'] = 'value'** -* إضافة قيمة جديدة إلى القاموس.&#x20;

{% hint style="warning" %}
إذا لم يكن المفتاح موجودًا من قبل، فستتم إضافة زوج مفتاح-قيمة جديد؛ وإلا فسيتم استبدال القيمة للمفتاح المحدد.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

هذا مثال على الكود في حقل الآلة الحاسبة

<div data-with-frame="true"><figure><img src="/files/41317c90cd0490bfe5c49fdc03304cfe1ec0d33e" alt=""><figcaption></figcaption></figure></div>

الإجابة

<div data-with-frame="true"><figure><img src="/files/1d06997209300b78f3a6c7e850debf3bd60f0804" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
/*إضافة قيمة جديدة إلى القاموس dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new
```

</details>

### كيفية التحقق مما إذا كان المفتاح موجودًا في قاموس

<details>

<summary>الوصف</summary>

**exist\_key(mass, key)** - للتحقق مما إذا كان المفتاح موجودًا في قاموس.

المعلمات:&#x20;

**mass -** dictionary&#x20;

**key -** المفتاح المراد البحث عنه

يعيد True أو False اعتمادًا على ما إذا تم العثور على المفتاح.

</details>

<details>

<summary>مثال</summary>

مثال على الاستخدام:

<div data-with-frame="true"><figure><img src="/files/d1c24bdcf178cb47786615ab77a29a2090112334" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/a6238ec9f0f1ef5c31806d8370663a489757e918" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = {"1": 123, "2": 234, "q": {"w": "e"}} 
q = if(exist_key(s, 'q'), 'Found', 'Another line')
```

</details>

### كيفية التحقق من موضع مفتاح في قاموس

<details>

<summary>الوصف</summary>

**key\_index(mass, key)** - للتحقق من موضع مفتاح في قاموس.

**المعلمات:** \
**mass - قاموس**  \
**key -** المفتاح المراد البحث عنه.

{% hint style="info" %}
يُحسب الموضع في القاموس بدءًا من 0. لذلك، العنصر الأول هو 0، والعنصر الثاني هو 1، وهكذا.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال على الاستخدام:

<div data-with-frame="true"><figure><img src="/files/86196f450a20dd2372a181fd94734cf8377c54c3" alt=""><figcaption></figcaption></figure></div>

*النتيجة:*

<div data-with-frame="true"><figure><img src="/files/0e0716d601a8dde006b51f9840b19fb4d6227826" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
s = {"1": 123, "2": 234, "q": {"w": "e"}} 
q = key_index(s, 'q')
```

</details>

### كيفية الحصول على عدد العناصر في قاموس

<details>

<summary>الوصف</summary>

**arr\_len(mass)** - لتحديد طول القاموس.&#x20;

المعلمة:\
**mass -** *dictionary*&#x20;

النتيجة: يعيد رقمًا – طول القاموس.

{% hint style="warning" %}
كن حذرًا عند تمرير وسيط إلى الدالة: إذا استُدعيت الدالة بدون وسائط، فإنها تعيد 0؛ وإذا لم يكن الوسيط قائمة أو قاموسًا، فإنها تعيد -1.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال على الاستخدام:

<div data-with-frame="true"><figure><img src="/files/2f64589600b6a7918d8679779fcd6cbb495dd734" alt=""><figcaption></figcaption></figure></div>

الإجابة:

<div data-with-frame="true"><figure><img src="/files/ec00db439e94df8e04efe26ec48af2044ed5636f" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

### كيفية حذف عنصر من قاموس

<details>

<summary>الوصف</summary>

حسب الفهرس أو المفتاح

**del(mass, key)** - لحذف عنصر من قائمة حسب الفهرس أو من قاموس حسب المفتاح.\
يأخذ وسيطين: القائمة/القاموس والفهرس/المفتاح المراد حذفه.\
يعيد القاموس أو القائمة المعدلة دون تغيير الكائن الأصلي.

{% hint style="warning" %}
إذا كانت القيم في قائمة أو قاموس أرقامًا، فاستخدم الدالة remove() لحذف عنصر.
{% endhint %}

</details>

<details>

<summary>مثال</summary>

مثال مع قاموس

<div data-with-frame="true"><figure><img src="/files/6fadcbd6bee57bda0d37faad6b6b9c26b0a21986" alt=""><figcaption></figcaption></figure></div>

النتيجة

<div data-with-frame="true"><figure><img src="/files/447aca8c8bb09c5ad137bea99f0abf5dd0a514ae" alt="" width="563"><figcaption></figcaption></figure></div>

مثال مع مصفوفة

<div data-with-frame="true"><figure><img src="/files/83ba3480f3d0245d2ff6e536bf5de77fbc36fc8c" alt="" width="563"><figcaption></figcaption></figure></div>

النتيجة

<div data-with-frame="true"><figure><img src="/files/dcb7656d6d952af14a68d272cdc96009e7d733c4" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

مثال مع قاموس

`s={"1":123, "2":234, "q":{"w":"e"}}`<br>

`q=del(s,'q')`

مثال مع مصفوفة

`s=["John", "Ann", "Sophie"]`\ <br>

`q=del(s, 1)`

</details>

### كيفية تحويل قاموس إلى نص سهل القراءة

<details>

<summary>الوصف</summary>

**humanize(dict, delimiter, from\_i, to\_i)**&#x20;

المعلمات:

**dict** - اسم القاموس\
**delimiter** - الفاصل بين الأسطر\
**from\_i** - فهرس العنصر الذي يبدأ الإخراج منه (بداية من 0)\
**to\_i** - فهرس العنصر الذي ينتهي عنده الإخراج (غير شامل)

</details>

<details>

<summary>مثال</summary>

لننظر إلى المثال:

<div data-with-frame="true"><figure><img src="/files/8f8d5bf37eb9b4cbd99633b96e627c3d4f8fe979" alt="" width="563"><figcaption></figcaption></figure></div>

الإجابة

<div data-with-frame="true"><figure><img src="/files/6a436a1dcb4e99b13024af2de2eac828d8538b6a" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

```
dict = {"[id146467928|Alex]":"6","[id145255525|Маx]":"20"}
r = humanize(dict, ': ')
```

</details>

### لترتيب القواميس&#x20;

sort() | sort\_by\_value()

<details>

<summary>الوصف</summary>

<mark style="background-color:blue;">**ترتيب القاموس**</mark>

**sort(dict, b)** - يرتب قائمة حسب القيمة، وقاموسًا حسب المفتاح

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;dict**- قاموس

**b** - اتجاه الفرز (False – تصاعدي افتراضيًا، True – تنازلي)

<mark style="background-color:blue;">**ترتيب القاموس حسب القيمة**</mark>

**sort\_by\_value(dict, b) -** فرز قاموس حسب القيم.

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;dict**- قاموس

**b** - اتجاه الفرز (False – تصاعدي افتراضيًا، True – تنازلي)

</details>

<details>

<summary>أمثلة</summary>

مثال: فرز قائمة بترتيب تنازلي وقاموس بترتيب تصاعدي:

<div data-with-frame="true"><figure><img src="/files/b4d70b2c2e8e82c9bd517525531d68c257baf9b2" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5e7c3017f18bc966a54a5381da3d85dbdd6efb4f" alt="" width="375"><figcaption></figcaption></figure></div>

فرز قاموس حسب قيمه:

<div data-with-frame="true"><figure><img src="/files/5efc7640868729b912d85ff714a01f8a3a2d6e6e" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/23e841383c58756bf9d8559e689d9402f6ff5864" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

مثال: فرز قائمة بترتيب تنازلي وقاموس بترتيب تصاعدي:

`array1=[5,4,0,6,3,0]`<br>

`array1=sort(array1, True)`

`dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}`

`dict=sort(dict)`

فرز قاموس حسب قيمه:

`dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}`&#x20;

`dict=sort_by_value(dict)`

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ar/chatbot/functions/alaalh-alhasbh/arrays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
