قواميس بايثون المتداخلة: الدليل الكامل

قواميس بايثون المتداخلة: الدليل الكامل تعلم بايثون,بايثون,بايثون برنامج,اسهل كورس بايثون,بايثون موبايل,بايثون بالعربي,البايثون,البرمجة بلغة بايثون,شرح بايثون,بايثون ويب,لغة بايثون,أساسيات بايثون,تعلم الآلية,حل مشكلة البقع الملونه والخطوط,حل عطل الشاشه الملونه,حل مشكلة الشاشه الملونه,المطورون العرب,تحليل البيانات,اصلاح الوان الشاشه,ظهور الوان علي شاشه التلفون,الهاتف سقط وتغيرت الوان الشاشه,اصلاح شاشة الجوال,ظهو خطوط على شاشة الهاتف الايفون,خورزميات تعلم الآلة,الملفات

 في هذا الدرس سنتعرف على قواميس بايثون المتداخلة، و هي القواميس التي تمثل قيم قاموس آخر.

علاوة على ذلك ستتعلم كيفية إنشاء قواميس متداخلة والوصول إلى عناصرها وتعديلها والمزيد،  بعد ذلك ستتعلم أيضًا كيفية العمل مع القواميس المتداخلة لتحويلها إلى إطار بيانات 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'}}

مالذي قمنا به ؟

  1. قمنا بإنشاء قاموس فارغ تحت إسم  users
  2. أنشأنا قاموسين آخرين  Ahmed وOmar.
  3. ثم قمنا بتعيين هذه القواميس لتكون قيم المفاتيح 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.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading