
في هذا الدرس سنتعرف على قواميس بايثون المتداخلة، و هي القواميس التي تمثل قيم قاموس آخر.
علاوة على ذلك ستتعلم كيفية إنشاء قواميس متداخلة والوصول إلى عناصرها وتعديلها والمزيد، بعد ذلك ستتعلم أيضًا كيفية العمل مع القواميس المتداخلة لتحويلها إلى إطار بيانات Pandas.
مع نهاية هذا الدرس سنكون قد تعلمنا:
- ما هي القواميس المتداخلة في بايثون.
- كيفية إنشاء قواميس متداخلة في بايثون.
- كيفية الوصول إلى العناصر وتعديلها وحذفها في القواميس المتداخلة.
- تعديل العناصر في القواميس المتداخلة في بايثون.
- حذف العناصر في القواميس المتداخلة في بايثون.
- التكرار من خلال القواميس المتداخلة في بايثون.
- كيفية تحويل القواميس المتداخلة إلى إطار بيانات Pandas.
القواميس المتداخلة في بايثون
قواميس بايثون عبارة عن حاوية هياكل بيانات تحتوي على مفاتيح وقيم يتم إنشاؤها باستخدام الأقواس المتعرجة {} حيث يمكن البحث عن قيمة من خلال الوصول إلى مفتاحها.
دعونا نلقي نظرة على مثال بسيط من القاموس:
# قاموس بايثون بسيط
user = {
'Name': 'Ahmed',
'Profession':'Geek'
}
في القاموس أعلاه لدينا عنصر يسمى user. يمكننا الوصول إلى قيمه من خلال الرجوع إلى مفاتيح القاموس، لنفترض أننا أردنا الوصول إلى قيمة القاموس للمفتاح’Name” يمكننا كتابتها
# الوصول إلى قيمة القاموس
print(user.get('Name')). # same as user['Name']
# Returns: Ahmed
الشيء المثير للاهتمام في قواميس بايثون هو أنه يمكننا استخدام قواميس أخرى كقيم لقاموس أخر و هذا يقودنا إلى الموضوع الرئيسي لهذه المقالة.
لنفترض أننا أنريد الحصول على قاموس يحتوي على معلومات المستخدم بناءً على معرف المستخدم الخاص بشخص ما.
دعونا ننشئ قاموسًا يخزن المعلومات على عدة مستخدمين مقسمًا حسب المعرف:
# فهم القواميس المتداخلة
users = {
1: {
'Name': 'Ahmed',
'Profession':'geek'
},
2: {
'Name': 'Omar',
'Profession': 'writer'
}
}
في هذا المثال قمنا بتضمين قاموسنا السابق في القاموس الجديد الأكبر حجمًا.
ما فعلناه هو إنشاء قاموس جديد متداخل و هذا ما سنتكلم عنه في القسم التالي بشكل متعمق.
إنشاء القواميس المتداخلة في بايثون
في هذا الجزء سنتعلم كيفية إنشاء قواميس متداخلة وهي قواميس لها قاموس آخر عبارة عن قيمة للقاموس الأول. دعنا نتعرف على كيفية إنشاء قواميس بايثون المتداخلة.
# إنشاء قاموس بايثون متداخل
users = {}
Ahmed = {
'Name': 'Ahmed',
'Profession':'Geek'
}
Kate = {
'Name': 'Omar',
'Profession': 'Writer'
}
users[1] = Ahmed
users[2] = Omar
print(users)
# Returns: {1: {'Name': 'Ahmed', 'Profession': 'Geek'}, 2: {'Name': 'Omar', 'Profession': 'Writer'}}
مالذي قمنا به ؟
- قمنا بإنشاء قاموس فارغ تحت إسم
users
. - أنشأنا قاموسين آخرين Ahmed وOmar.
- ثم قمنا بتعيين هذه القواميس لتكون قيم المفاتيح 1 و 2 في قاموس
users
.
الوصول إلى عناصر قواميس المتداخلة في بايثون
في هذا الجزء سنتعلم كيفية الوصول إلى العناصر في قاموس بايثون المتداخل.
في جزء سابق استخدمنا طريقة ()get للوصول إلى العناصر أما الأن دعونا نرى ما يحدث عندما نحاول الوصول إلى عنصر في قاموس متداخل:

يمكننا أن نرى أنه قد تحصلنا على قاموس وبما أننا تحصلنا على هذا الأخير يمكننا الوصول إلى عناصر القاموس أيضا.
لنفترض أننا نريد الوصول إلى “اسم” المستخدم 1 فيمكننا كتابة ما يلي:
# الوصول إلى العناصر المتداخلة في قواميس بايثون
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
print(users.get(1).get('Name'))
# Returns: Ahmed
تعديل العناصر في القواميس المتداخلة في بايثون
في هذا لجزء ستتعلم كيفية تعديل العناصر في القواميس المتداخلة و من أجل ذلك نستخدم نفس العملية التي نستخدمها لإعداد عنصر جديد في القاموس.
لنفترض أننا نريد تغيير مهنة المستخدم 2 إلى "abitat for Humanity
” و يمكننا فعل ذلك :
# تعديل القاموس المتداخل
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
users[2]['Profession'] = 'Habitat for Humanity'
print(users)
# Returns:
# {1: {'Name': 'Ahmed', 'Profession': 'Geek'}, 2: {'Name': 'Omar', 'Profession': 'Habitat for Humanity'}}
حذف العناصر في القواميس المتداخلة في بايثون
تستخدم قواميس بايثون الكلمة الأساسية del لحذف المفتاتيح و القيم، و للقيام بذلك في قاموس متداخل نحتاج التعمق أكثر في القاموس.
دعونا نرى كيف يمكننا حذف مفتاح “Profession” من القاموس 1:
# حذف عنصر من قاموس متداخل
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
del users[1]['Profession']
print(users)
# Returns:
# {1: {'Name': 'Ahmed'}, 2: {'Name': 'Omar', 'Profession': 'Writer'}}
بالإضافة إلى ذلك يمكننا حذف قاموس متداخل بالكامل باستخدام نفس الطريقة، نظرًا لأن القاموس المتداخل هو في الواقع مجرد مفتاح أو قيمة في قاموسنا الكبير.
لنحذف القاموس الأول بالكامل 1:
# حذف قاموس متداخل بالكامل
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
del users[1]
print(users)
# Returns:
# {2: {'Name': 'Omar', 'Profession': 'Writer'}}
التكرار من خلال القواميس المتداخلة في بايثون
في هذا الجزء سنتعلم كيفية التكرار من خلال القواميس المتداخلة، و يمكن أن يفيدك هذا عندما تريد طباعة القيم في القاموس:
# التكرار من خلال القواميس المتداخلة
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
def iterate_dict(dict_to_iterate):
for key, value in dict_to_iterate.items():
if type(value) == dict:
print(key)
iterate_dict(value)
else:
print(key + ":" + value)
iterate_dict(users)
# Returns:
# 1
# Name:Ahmed
# Profession:Geek
# 2
# Name:Omar
# Profession:Writer
تحويل قاموس بايثون متداخل إلى إيطار بيانات Pandas
في هذا الجزء الأخير سنتعلم كيفية تحويل قاموس متداخل إلى إيطار بيانات Pandas.
يمكننا تمرير القاموس المتداخل إلى دالة ()DataFrame .
import pandas as pd
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
df = pd.DataFrame(users).T
print(df)
# Returns
# Name Profession
# 1 Ahmed Geek
# 2 Omar Writer
إلى هنا أكون قد إنتهيت من هذا الدرس وتعرفنا من خلاله على القواميس المتداخلة في بايثون.
تعلمنا كل من القواميس المتداخلة ثم تعلمنا كيفية الوصول إلى عناصرها وتعديلها وحذفها. أخيرًا تعلمنا كيفية التكرار على القواميس المتداخلة وكذلك كيفية قراءتها في Pandas DataFrames.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.