الفرق بين المراجعتين لصفحة: «Python/dict»
لا ملخص تعديل |
لا ملخص تعديل |
||
(7 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:القواميس في بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:القواميس dict في بايثون}}</noinclude> | ||
القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) <code>(key: value)</code> مع اشتراط كون المفاتيح ذات قيم فريدة (ضمن القاموس الواحد). يمكن استخدام الأقواس المعقوفة <code>{}</code> لإنشاء قاموس فارغ.<syntaxhighlight lang="python3"> | القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) <code>(key: value)</code> مع اشتراط كون المفاتيح ذات قيم فريدة (ضمن القاموس الواحد). يمكن استخدام الأقواس المعقوفة <code>{}</code> لإنشاء قاموس فارغ.<syntaxhighlight lang="python3"> | ||
>>> tel = {'jack': 4098, 'sape': 4139} | >>> tel = {'jack': 4098, 'sape': 4139} | ||
سطر 7: | سطر 7: | ||
>>> tel['jack'] | >>> tel['jack'] | ||
4098 | 4098 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
__TOC__ | |||
يمكن استخدام أي نوع من أنواع البيانات غير القابلة للتغيير immutable كمفاتيح في القواميس، مثل [[Python/str|السلاسل النصية]] و<nowiki/>[[Python/int|الأرقام]]، أو [[Python/tuples|الصفوف]] التي تتضمن [[Python/str|سلاسل نصية]] أو [[Python/int|أعداد]] أو [[Python/tuples|صفوف]]، ولكن بشرط أن لا تتضمن - بصورة مباشرة أو غير مباشرة - أي كائن قابل للتغيير. وبطبيعة الحال لا يمكن استخدام [[Python/list|القوائم | تأخذ القواميس مسمّيات مختلفة في لغات البرمجة الأخرى، مثل الذواكر الترابطية (associative memories) أو المصفوفات الترابطية (associative arrays). | ||
تختلف القواميس عن أنواع التسلسلات الأخرى في طريقة الفهرسة، فالقوائم والمجموعات تكون مفهرسة بواسطة مدى محدد من الأرقام، في حين أنّ القواميس تكون مفهرسة بواسطة المفاتيح (keys). | |||
يمكن استخدام أي نوع من أنواع البيانات غير القابلة للتغيير (immutable) كمفاتيح في القواميس، مثل [[Python/str|السلاسل النصية]] و<nowiki/>[[Python/int|الأرقام]]، أو [[Python/tuples|الصفوف]] التي تتضمن [[Python/str|سلاسل نصية]] أو [[Python/int|أعداد]] أو [[Python/tuples|صفوف]]، ولكن بشرط أن لا تتضمن - بصورة مباشرة أو غير مباشرة - أي كائن قابل للتغيير. وبطبيعة الحال لا يمكن استخدام [[Python/list|القوائم]] كمفاتيح نظرًا لأنّها كائنات قابلة للتغيير بواسطة الإسناد عن طريق الفهارس أو الاقتطاع أو توابع مثل <code>[[Python/list/append|append()]]</code> و [[Python/list/extend|<code>extend()</code>]]. | |||
في حال إضافة قائمة بأزواج (مفتاح: قيمة) داخل الأقواس المعقوفة فإنّ اللغة تضيف هذه الأزواج كقيمة ابتدائية في القاموس، وتستخدم اللغة طريقة العرض هذه عندما تعرض القواميس كمخرجات. | في حال إضافة قائمة بأزواج (مفتاح: قيمة) داخل الأقواس المعقوفة فإنّ اللغة تضيف هذه الأزواج كقيمة ابتدائية في القاموس، وتستخدم اللغة طريقة العرض هذه عندما تعرض القواميس كمخرجات. | ||
سطر 25: | سطر 29: | ||
>>> tel['jack'] | >>> tel['jack'] | ||
9841 | 9841 | ||
</syntaxhighlight>تطلق اللغة | </syntaxhighlight>تطلق اللغة خطأ <code>[[Python/built-in exceptions#KeyError|KeyError]]</code> في حال استخراج قيمة باستخدام مفتاح غير موجود ضمن القاموس:<syntaxhighlight lang="python3"> | ||
>>> tel['rosy'] | >>> tel['rosy'] | ||
Traceback (most recent call last): | Traceback (most recent call last): | ||
File "<stdin>", line 1, in <module> | File "<stdin>", line 1, in <module> | ||
KeyError: 'rosy' | KeyError: 'rosy' | ||
</syntaxhighlight>يمكن الحصول على قائمة عشوائية بالمفاتيح الموجودة ضمن القاموس باستخدام الدالة <code>list()</code>:<syntaxhighlight lang="python3"> | </syntaxhighlight>يمكن الحصول على قائمة عشوائية بالمفاتيح الموجودة ضمن القاموس باستخدام الدالة [[Python/list/sort|<code>list()</code>]]:<syntaxhighlight lang="python3"> | ||
>>> list(tel.keys()) | >>> list(tel.keys()) | ||
['jack', 'guido'] | ['jack', 'guido'] | ||
</syntaxhighlight>وللحصول على قائمة مرتّبة بالمفاتيح فيمكن استخدام الدالة <code>sorted()</code>:<syntaxhighlight lang="python3"> | </syntaxhighlight>وللحصول على قائمة مرتّبة بالمفاتيح فيمكن استخدام الدالة <code>[[Python/sorted|sorted()]]</code>:<syntaxhighlight lang="python3"> | ||
>>> sorted(tel.keys()) | >>> sorted(tel.keys()) | ||
['guido', 'jack'] | ['guido', 'jack'] | ||
سطر 41: | سطر 45: | ||
>>> 'jack' not in tel | >>> 'jack' not in tel | ||
False | False | ||
</syntaxhighlight>تستخدم الدالة <code>dict()</code> لإنشاء قواميس بصورة مباشرة من تسلسلات من أزواج قيمة | </syntaxhighlight>تستخدم الدالة <code>dict()</code> لإنشاء قواميس بصورة مباشرة من تسلسلات من أزواج (مفتاح، قيمة)، كما يلي:<syntaxhighlight lang="python3"> | ||
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) | >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) | ||
{'sape': 4139, 'jack': 4098, 'guido': 4127} | {'sape': 4139, 'jack': 4098, 'guido': 4127} | ||
</syntaxhighlight>يمكن كذلك الاستفادة من dict comprehensions لإنشاء قواميس من عبارات مفتاح | </syntaxhighlight>يمكن كذلك الاستفادة من dict comprehensions لإنشاء قواميس من عبارات (مفتاح: قيمة) متنوعة:<syntaxhighlight lang="python3"> | ||
>>> {x: x**2 for x in (2, 4, 6)} | >>> {x: x**2 for x in (2, 4, 6)} | ||
{2: 4, 4: 16, 6: 36} | {2: 4, 4: 16, 6: 36} | ||
سطر 51: | سطر 55: | ||
{'sape': 4139, 'jack': 4098, 'guido': 4127} | {'sape': 4139, 'jack': 4098, 'guido': 4127} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== الدوال التابعة للكائن <code>dict</code> == | |||
=== <code>[[Python/dict/clear|dict.clear()]]</code> === | |||
تحذف الدالة جميع عناصر القاموس. | |||
=== <code>[[Python/dict/copy|dict.copy()]]</code> === | |||
تؤدي الدالة عملية نسخ سطحية (shallow copy) للقاموس. | |||
=== <code>[[Python/dict/fromkeys|dict.fromkeys()]]</code> === | |||
تنشئ الدالة قاموسًا جديدًا من التسلسل الذي يحدّده المستخدم في المعاملات. | |||
=== <code>[[Python/dict/get|dict.get()]]</code> === | |||
تعيد الدالة القيمة المرتبطة بالمفتاح الذي يحدّده المستخدم. | |||
=== <code>[[Python/dict/items|dict.items()]]</code> === | |||
تعيد الدالة عرضًا جديدًا لعناصر القاموس بهيئة (مفتاح، قيمة). | |||
=== <code>[[Python/dict/keys|dict.keys()]]</code> === | |||
تعيد الدالة عرضًا جديدًا يتضمّن جميع مفاتيح القاموس. | |||
=== <code>[[Python/dict/pop|dict.pop()]]</code> === | |||
تحذف الدالة المفتاح المحدد في المعاملات من القاموس. | |||
=== <code>[[Python/dict/popitem|dict.popitem()]]</code> === | |||
تحذف الدالة زوج (مفتاح، قيمة) عشوائيًا من القاموس. | |||
=== <code>[[Python/dict/setdefault|dict.setdefault()]]</code> === | |||
تعيد الدالة قيمة المفتاح المحدد في المعاملات إن كان موجودًا. أما إن كان المفتاح غير موجود في القاموس فإنّ الدالة تضيف المفتاح مع القيمة المحدّدة له إلى القاموس. | |||
=== <code>[[Python/dict/update|dict.update()]]</code> === | |||
تحدّث الدالةُ القاموسَ بزوج (مفتاح، قيمة) من قاموس أو كائن آخر قابل للتكرار. | |||
=== <code>[[Python/dict/values|dict.values()]]</code> === | |||
تعرض الدالة قيم المفاتيح الخاصة بالقاموس. | |||
== انظر أيضًا == | |||
* [[Python/tuples|الصفوف tuple في بايثون]]. | |||
* [[Python/list|القوائم list في بايثون]]. | |||
* [[Python/set|المجموعات set في بايثون]]. | |||
== مصادر == | == مصادر == | ||
* صفحة [https://docs.python.org/3/tutorial/datastructures.html#dictionaries Data Structures] في توثيق بايثون الرسمي. | * صفحة [https://docs.python.org/3/tutorial/datastructures.html#dictionaries Data Structures] في توثيق بايثون الرسمي. | ||
* [https://docs.python.org/3/library/stdtypes.html#dict قسم dict في صفحة Types في توثيق بايثون الرسمي.] | |||
[[تصنيف:Python]] | [[تصنيف:Python]] | ||
[[تصنيف:Python Types]] | [[تصنيف:Python Types]] | ||
المراجعة الحالية بتاريخ 08:39، 22 مايو 2018
القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) (key: value)
مع اشتراط كون المفاتيح ذات قيم فريدة (ضمن القاموس الواحد). يمكن استخدام الأقواس المعقوفة {}
لإنشاء قاموس فارغ.
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
تأخذ القواميس مسمّيات مختلفة في لغات البرمجة الأخرى، مثل الذواكر الترابطية (associative memories) أو المصفوفات الترابطية (associative arrays).
تختلف القواميس عن أنواع التسلسلات الأخرى في طريقة الفهرسة، فالقوائم والمجموعات تكون مفهرسة بواسطة مدى محدد من الأرقام، في حين أنّ القواميس تكون مفهرسة بواسطة المفاتيح (keys).
يمكن استخدام أي نوع من أنواع البيانات غير القابلة للتغيير (immutable) كمفاتيح في القواميس، مثل السلاسل النصية والأرقام، أو الصفوف التي تتضمن سلاسل نصية أو أعداد أو صفوف، ولكن بشرط أن لا تتضمن - بصورة مباشرة أو غير مباشرة - أي كائن قابل للتغيير. وبطبيعة الحال لا يمكن استخدام القوائم كمفاتيح نظرًا لأنّها كائنات قابلة للتغيير بواسطة الإسناد عن طريق الفهارس أو الاقتطاع أو توابع مثل append()
و extend()
.
في حال إضافة قائمة بأزواج (مفتاح: قيمة) داخل الأقواس المعقوفة فإنّ اللغة تضيف هذه الأزواج كقيمة ابتدائية في القاموس، وتستخدم اللغة طريقة العرض هذه عندما تعرض القواميس كمخرجات.
إنّ العمليات الرئيسية التي تؤديها القواميس هي تخزين قيمة مع مفتاح معين، واستخراج تلك القيمة بواسطة المفتاح الخاصّ بها.
يمكن حذف زوج (مفتاح: قيمة) باستخدام الكلمة المفتاحية del
:
>>> del tel['sape']
في حال تخزين قيمة باستخدام مفتاح مستخدم سابقًا، فإنّ القيمة السابقة لذلك المفتاح ستهمل وستربط اللغة القيمة الجديدة بهذا المفتاح.
>>> tel['jack']
4098
>>> tel['jack'] = 9841
>>> tel['jack']
9841
تطلق اللغة خطأ KeyError
في حال استخراج قيمة باستخدام مفتاح غير موجود ضمن القاموس:
>>> tel['rosy']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'rosy'
يمكن الحصول على قائمة عشوائية بالمفاتيح الموجودة ضمن القاموس باستخدام الدالة list()
:
>>> list(tel.keys())
['jack', 'guido']
وللحصول على قائمة مرتّبة بالمفاتيح فيمكن استخدام الدالة sorted()
:
>>> sorted(tel.keys())
['guido', 'jack']
للتحقق من وجود مفتاح معين في القاموس يمكن استخدام الكلمة المفتاحية in
:
>>> 'guido' in tel
True
>>> 'jack' not in tel
False
تستخدم الدالة dict()
لإنشاء قواميس بصورة مباشرة من تسلسلات من أزواج (مفتاح، قيمة)، كما يلي:
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
يمكن كذلك الاستفادة من dict comprehensions لإنشاء قواميس من عبارات (مفتاح: قيمة) متنوعة:
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
عندما تكون المفاتيح سلاسل نصية بسيطة، يمكن استخدام معاملات مفتاحية لتعيين الأزواج، كما في المثال التالي:
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
الدوال التابعة للكائن dict
dict.clear()
تحذف الدالة جميع عناصر القاموس.
dict.copy()
تؤدي الدالة عملية نسخ سطحية (shallow copy) للقاموس.
dict.fromkeys()
تنشئ الدالة قاموسًا جديدًا من التسلسل الذي يحدّده المستخدم في المعاملات.
dict.get()
تعيد الدالة القيمة المرتبطة بالمفتاح الذي يحدّده المستخدم.
dict.items()
تعيد الدالة عرضًا جديدًا لعناصر القاموس بهيئة (مفتاح، قيمة).
dict.keys()
تعيد الدالة عرضًا جديدًا يتضمّن جميع مفاتيح القاموس.
dict.pop()
تحذف الدالة المفتاح المحدد في المعاملات من القاموس.
dict.popitem()
تحذف الدالة زوج (مفتاح، قيمة) عشوائيًا من القاموس.
dict.setdefault()
تعيد الدالة قيمة المفتاح المحدد في المعاملات إن كان موجودًا. أما إن كان المفتاح غير موجود في القاموس فإنّ الدالة تضيف المفتاح مع القيمة المحدّدة له إلى القاموس.
dict.update()
تحدّث الدالةُ القاموسَ بزوج (مفتاح، قيمة) من قاموس أو كائن آخر قابل للتكرار.
dict.values()
تعرض الدالة قيم المفاتيح الخاصة بالقاموس.
انظر أيضًا
مصادر
- صفحة Data Structures في توثيق بايثون الرسمي.
- قسم dict في صفحة Types في توثيق بايثون الرسمي.