آموزش پایتون - افزودن آیتم‌ها

افزودن آیتم‌ها به دیکشنری

افزودن آیتم‌ها به دیکشنری در پایتون به معنای درج جفت‌های کلید-مقدار (key-value) جدید در یک دیکشنری موجود است. دیکشنری‌ها ساختارهای داده‌ای تغییرپذیر (mutable) هستند که مجموعه‌ای از جفت‌های کلید-مقدار را ذخیره می‌کنند، به طوری که هر کلید به یک مقدار مربوطه متصل است.

افزودن آیتم‌ها به دیکشنری این امکان را به شما می‌دهد تا در طول اجرای برنامه، محتوای آن را طبق نیاز به صورت پویا به‌روزرسانی کنید و توسعه دهید.

ما می‌توانیم آیتم‌های دیکشنری در پایتون را از روش‌های مختلفی اضافه کنیم، از جمله:

  • استفاده از کروشه (Square Brackets)
  • استفاده از متد update()
  • استفاده از پیمایش یا درک دیکشنری (Comprehension)
  • استفاده از باز کردن بسته‌بندی (Unpacking)
  • استفاده از عملگر اجتماع (Union Operator)
  • استفاده از عملگر |=
  • استفاده از متد setdefault()
  • استفاده از متد collections.defaultdict()

افزودن آیتم به دیکشنری با استفاده از کروشه

کروشه [] در پایتون برای دسترسی به عناصر در دنباله‌ها مانند لیست‌ها و رشته‌ها از طریق عملیات ایندکس‌گذاری و بررش‌زنی (slicing) استفاده می‌شود. علاوه بر این، هنگام کار با دیکشنری‌ها، از کروشه‌ها برای مشخص کردن کلیدها جهت دسترسی یا تغییر مقادیر مرتبط استفاده می‌شود.

شما می‌توانید با مشخص کردن کلید در داخل کروشه و انتساب یک مقدار به آن، آیتم‌هایی را به دیکشنری اضافه کنید. اگر کلید از قبل در شیء دیکشنری وجود داشته باشد، مقدار آن به مقدار جدید به‌روزرسانی می‌شود. اگر کلید در دیکشنری موجود نباشد، یک جفت کلید-مقدار جدید اضافه خواهد شد.

مثال

در این مثال، ما در حال ساخت دیکشنری به نام "marks" هستیم که کلیدهای آن نشان‌دهنده نام‌ها و مقادیر آن‌ها اعداد صحیح مربوطه هستند. سپس، یک جفت کلید-مقدار جدید 'Kavya': 58 را با استفاده از نحو کروشه به دیکشنری اضافه می‌کنیم:

marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("Initial dictionary: ", marks)
marks['Kavya'] = 58
print ("Dictionary after new addition: ", marks)

این کد خروجی زیر را تولید خواهد کرد:

Initial dictionary:  {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
Dictionary after new addition:  {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49, 'Kavya': 58}

افزودن آیتم به دیکشنری با استفاده از متد update()

متد update() در دیکشنری‌های پایتون برای ادغام محتوای یک دیکشنری دیگر یا یک شیء قابل پیمایش (iterable) از جفت‌های کلید-مقدار در دیکشنری فعلی استفاده می‌شود. این متد جفت‌های کلید-مقدار را اضافه یا به‌روزرسانی می‌کند و اطمینان حاصل می‌کند که کلیدهای موجود با مقادیر جدید به‌روزرسانی شوند و کلیدهای جدید به دیکشنری اضافه گردند.

شما می‌توانید با پاس دادن یک دیکشنری دیگر یا یک iterable از جفت‌های کلید-مقدار به متد update()، چندین آیتم را به دیکشنری اضافه کنید.

مثال

در مثال زیر، ما از متد update() برای افزودن چندین جفت کلید-مقدار جدید 'Kavya': 58 و 'Mohan': 98 به دیکشنری 'marks' استفاده می‌کنیم:

marks = {"Savita":67, "Imtiaz":88}
print ("Initial dictionary: ", marks)
marks.update({'Kavya': 58, 'Mohan': 98})
print ("Dictionary after new addition: ", marks)

خروجی را به صورتی که در زیر نشان داده شده است دریافت می‌کنیم:

Initial dictionary:  {'Savita': 67, 'Imtiaz': 88}
Dictionary after new addition:  {'Savita': 67, 'Imtiaz': 88, 'Kavya': 58, 'Mohan': 98}

افزودن آیتم به دیکشنری با استفاده از Unpacking

آن‌پکینگ یا باز کردن بسته‌بندی در پایتون به استخراج عناصر فردی از یک مجموعه مانند لیست، تاپل یا دیکشنری و انتساب آن‌ها به متغیرها در یک دستور واحد اشاره دارد. این کار را می‌توان با استفاده از عملگر * برای قابل‌پیمایش‌هایی مانند لیست‌ها و تاپل‌ها، و عملگر ** برای دیکشنری‌ها انجام داد.

ما می‌توانیم با ترکیب دو یا چند دیکشنری توسط عملگر آن‌پکینگ ** آیتم‌هایی را به دیکشنری اضافه کنیم.

مثال

در مثال زیر، ما در حال مقداردهی اولیه دو دیکشنری به نام‌های "marks" و "marks1" هستیم که هر دو شامل نام‌ها و مقادیر صحیح مربوط به آن‌ها هستند. سپس، با ادغام "marks" و "marks1" با استفاده از آن‌پکینگ دیکشنری، یک دیکشنری جدید به نام "newmarks" ایجاد می‌کنیم:

marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
newmarks = {**marks, **marks1}
print ("marks dictionary after update: \n", newmarks)

خروجی کد بالا به شرح زیر است:

marks dictionary before update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}

افزودن آیتم به دیکشنری با استفاده از عملگر اجتماع (|)

عملگر اجتماع در پایتون که با نماد | نشان داده می‌شود، برای ترکیب عناصر دو مجموعه (set) در یک مجموعه جدید که شامل تمام عناصر منحصربه‌فرد هر دو مجموعه است استفاده می‌شود. همچنین می‌توان از آن در پایتون ۳.۹ و بالاتر برای ادغام محتوای دو دیکشنری استفاده کرد.

ما می‌توانیم با ادغام دو دیکشنری در یک دیکشنری جدید که شامل تمام جفت‌های کلید-مقدار از هر دو دیکشنری است، با استفاده از عملگر اجتماع، آیتم‌هایی را به دیکشنری اضافه کنیم.

مثال

در این مثال، ما از عملگر | برای ترکیب دیکشنری‌های "marks" و "marks1" استفاده می‌کنیم، به طوری که در صورت وجود کلیدهای تکراری، مقادیر "marks1" اولویت خواهند داشت:

marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
newmarks = marks | marks1
print ("marks dictionary after update: \n", newmarks)

خروجی کد بالا در زیر نشان داده شده است:

marks dictionary before update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}

افزودن آیتم به دیکشنری با استفاده از عملگر "=|"

عملگر |= در پایتون یک عملگر اجتماع درجات (in-place) برای مجموعه‌ها و دیکشنری‌ها است. این عملگر، مجموعه یا دیکشنری سمت چپ را با عناصر مجموعه یا دیکشنری سمت راست به‌روزرسانی می‌کند.

ما می‌توانیم با به‌روزرسانی یک دیکشنری موجود با جفت‌های کلید-مقدار از یک دیکشنری دیگر، با استفاده از عملگر |= آیتم‌هایی را به دیکشنری اضافه کنیم. اگر کلیدهای تداخلی وجود داشته باشد، مقادیر دیکشنری سمت راست جایگزین مقادیر دیکشنری سمت چپ خواهند شد.

مثال

در مثال زیر، ما از عملگر |= برای به‌روزرسانی "marks" با جفت‌های کلید-مقدار از "marks1" استفاده می‌کنیم، به طوری که در صورت وجود کلیدهای تکراری، مقادیر "marks1" اولویت دارند:

marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
marks |= marks1
print ("marks dictionary after update: \n", marks)

خروجی تولید شده به صورتی است که در زیر نشان داده شده است:

marks dictionary before update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
 {'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}

افزودن آیتم به دیکشنری با استفاده از متد setdefault()

متد setdefault() در پایتون برای دریافت مقدار یک کلید مشخص در دیکشنری استفاده می‌شود. اگر کلید وجود نداشته باشد، کلید را با یک مقدار پیش‌فرض مشخص‌شده درج می‌کند.

ما می‌توانیم با مشخص کردن یک کلید و یک مقدار پیش‌فرض، با استفاده از متد setdefault() آیتم‌هایی را به دیکشنری اضافه کنیم.

مثال

در این مثال، ما از setdefault() برای افزودن جفت کلید-مقدار "major": "Computer Science" به دیکشنری "student" استفاده می‌کنیم:

# Initial dictionary
student = {"name": "Alice", "age": 21}
# Adding a new key-value pair
major = student.setdefault("major", "Computer Science")
print(student)

از آنجایی که کلید "major" وجود ندارد، با مقدار پیش‌فرض مشخص‌شده اضافه می‌شود، همان‌طور که در خروجی زیر نشان داده شده است:

{'name': 'Alice', 'age': 21, 'major': 'Computer Science'}

افزودن آیتم به دیکشنری با استفاده از متد collections.defaultdict()

متد collections.defaultdict() در پایتون یک زیرکلاس از کلاس توکار "dict" است که دیکشنری‌هایی با مقادیر پیش‌فرض برای کلیدهایی که هنوز تنظیم نشده‌اند ایجاد می‌کند. این متد بخشی از ماژول collections در کتابخانه استاندارد پایتون است.

ما می‌توانیم با مشخص کردن یک کارخانه پیش‌فرض (default factory)، که مقدار پیش‌فرض کلیدهای هنوز تنظیم‌نشده را تعیین می‌کند، با استفاده از متد collections.defaultdict() آیتم‌هایی را به دیکشنری اضافه کنیم. هنگام دسترسی به یک کلید مفقود برای اولین بار، کارخانه پیش‌فرض فراخوانی می‌شود تا یک مقدار پیش‌فرض ایجاد کند و این مقدار در دیکشنری درج می‌شود.

مثال

در این مثال، ما در حال مقداردهی اولیه نمونه‌هایی از defaultdict با کارخانه‌های پیش‌فرض مختلف هستیم: int برای مقداردهی اولیه کلیدهای مفقود با 0، list برای مقداردهی اولیه کلیدهای مفقود با یک لیست خالی، و یک تابع سفارشی default_value برای مقداردهی اولیه کلیدهای مفقود با مقدار بازگشتی تابع:

from collections import defaultdict
# Using int as the default factory to initialize missing keys with 0
d = defaultdict(int)
# Incrementing the value for key 'a'
d["a"] += 1  
print(d)  

# Using list as the default factory to initialize missing keys with an empty list
d = defaultdict(list)
# Appending to the list for key 'b'
d["b"].append(1)  
print(d)  

# Using a custom function as the default factory
def default_value():
    return "N/A"

d = defaultdict(default_value)
print(d["c"]) 

خروجی به دست آمده به شرح زیر است:

defaultdict(<class 'int'>, {'a': 1})
defaultdict(<class 'list'>, {'b': [1]})
N/A

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.