في هذا الدرس سنتعرف على قواميس بايثون المتداخلة، القواميس التي تمثل قيم قاموس آخر، ستتعلم كيفية إنشاء قواميس متداخلة والوصول إلى عناصرها وتعديلها والمزيد، ستتعلم أيضًا كيفية العمل مع القواميس المتداخلة لتحويلها إلى إطار بيانات Pandas.مع نهاية هذا الدرس سنكون قد تعلمنا:
- ما هي القواميس المتداخلة في بايثون
- كيفية إنشاء قواميس متداخلة في بايثون
- كيفية الوصول إلى العناصر وتعديلها وحذفها في القواميس المتداخلة
- كيفية تحويل القواميس المتداخلة إلى إطار بيانات Pandas
القواميس المتداخلة في بايثون
قواميس بايثون عبارة عن حاوية هياكل بيانات تحتوي على مفاتيح وقيم يتم إنشاؤها باستخدام الأقواس المتعرجة {} حيث يمكن البحث عن قيمة من خلال الوصول إلى مفتاحها، دعونا نلقي نظرة على مثال بسيط من القاموس:
user = {
'Name': 'Ahmed',
'Profession':'Geek'
}
في القاموس أعلاه لدينا عنصر يسمى user. يمكننا الوصول إلى قيمه من خلال الرجوع إلى مفاتيح القاموس، لنفترض أننا أردنا الوصول إلى قيمة القاموس للمفتاح'Name" يمكننا كتابتها
print(user.get('Name')).
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)
مالذي قمنا به ؟
- قمنا بإنشاء قاموس فارغ تحت إسم
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'))
تعديل العناصر في القواميس المتداخلة في بايثون
في هذا لجزء ستتعلم كيفية تعديل العناصر في القواميس المتداخلة و من أجل ذلك نستخدم نفس العملية التي نستخدمها لإعداد عنصر جديد في القاموس.
لنفترض أننا نريد تغيير مهنة المستخدم 2 إلى "abitat for Humanity
" و يمكننا فعل ذلك :
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
users[2]['Profession'] = 'Habitat for Humanity'
print(users)
حذف العناصر في القواميس المتداخلة في بايثون
تستخدم قواميس بايثون الكلمة الأساسية del لحذف المفتاتيح و القيم، و للقيام بذلك في قاموس متداخل نحتاج التعمق أكثر في القاموس، دعونا نرى كيف يمكننا حذف مفتاح "Profession" من القاموس 1:
حذف عنصر من قاموس متداخل
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
del users[1]['Profession']
print(users)
كما يمكننا حذف قاموس متداخل بالكامل باستخدام نفس الطريقة، نظرًا لأن القاموس المتداخل هو في الواقع مجرد مفتاح أو قيمة في قاموسنا الكبير، لنحذف القاموس الأول بالكامل 1:
حذف قاموس متداخل بالكامل
users = {
1: {'Name': 'Ahmed', 'Profession': 'Geek'},
2: {'Name': 'Omar', 'Profession': 'Writer'}
}
del users[1]
print(users)
التكرار من خلال القواميس المتداخلة في بايثون
في هذا الجزء سنتعلم كيفية التكرار من خلال القواميس المتداخلة، و يمكن أن يفيدك هذا عندما تريد طباعة القيم في القاموس:
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)
تحويل قاموس بايثون متداخل إلى إيطار بيانات 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)
إلى هنا أكون قد إنتهيت من هذا الدرس وتعرفنا من خلاله على القواميس المتداخلة في بايثون، تعلمنا كل من القواميس المتداخلة ثم تعلمنا كيفية الوصول إلى عناصرها وتعديلها وحذفها. أخيرًا تعلمنا كيفية التكرار على القواميس المتداخلة وكذلك كيفية قراءتها في Pandas DataFrames.