وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

Dictionaries vs Arrays in Python – Deep Dive

0 4
زمان لازم برای مطالعه: 13 دقیقه


معرفی

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

توجه داشته باشید: این راهنما فرض می کند پایتون 3.x، و بیشتر آن در نسخه های بعد از آن است. با این حال، ما همچنین به برخی از تفاوت‌های کلیدی اشاره خواهیم کرد پایتون 2.x.

راهنمای آرایه های پایتون

یک آرایه یکی از ساختارهای داده بنیادی در علوم کامپیوتر است – دنباله ای از 0..n عناصر، که در آن هر عنصر دارای یک شاخص است.

اکثر آرایه ها دارای a اندازه ثابت، بنابراین هر بار که حافظه جدیدی ایجاد می شود، تکه ای از حافظه را می گیرند:

نمایه سازی آرایه

در اینجا، ما یک آرایه ساده داریم که از 7 عنصر تشکیل شده است. نمایه سازی معمولاً در شروع می شود 0، و هر عنصر دارای یک شاخص موقعیتی است که می توانیم از آن برای دسترسی به آن استفاده کنیم. این باعث پیچیدگی زمان دسترسی آرایه می شود O (1).

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

6 نوع آرایه مهم در پایتون وجود دارد: list، tuple، str، bytes، bytearray، و array.array.

وقتی در مورد هر یک از آنها صحبت می کنیم، چند ویژگی کلیدی وجود دارد که در نظر می گیریم:

  • چه آنها باشند پویا یا پویا نیست
  • چه آنها باشند به صورت ایستا یا به صورت پویا تایپ شده
  • چه آنها باشند قابل تغییر یا تغییرناپذیر

لیست های پایتون

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

در پایتون، یک لیست با اعلام عناصر آن در براکت های مربعی تعریف می شود (). بیایید جلو برویم و لیستی را تعریف کنیم:

my_list = (1, 2, 3, "Mark", "John", "Emma")
print(my_list)

این شامل چند عدد صحیح و چند رشته است که نشان دهنده نام است. از آنجایی که لیست ها هستند به صورت پویا تایپ شده است، این مجاز است:

(1, 2, 3, 'Mark', 'John', 'Emma')

از آنجایی که لیست ها هستند پویا، می توانیم تعداد عناصر را با اضافه کردن یک عنصر جدید تغییر دهیم، به عنوان مثال:

my_list.append(4)
my_list.append("Peter")
print(my_list)

این باعث می شود که لیست ما به جای 6 عنصری که در ابتدا تعریف کردیم دارای 8 عنصر باشد:

(1, 2, 3, 'Mark', 'John', 'Emma', 4, 'Peter')

حالا بیایید سعی کنیم یک عنصر را جایگزین کنیم و یک عنصر جدید اضافه کنیم. شناسه لیست (مرجع در حافظه) را بررسی می کنیم تا تأیید کنیم که با یک کپی جدید که حاوی عناصر اضافه شده یا جایگزین شده است، در زیر کاپوت خاموش نشده است:

my_list = (1, 2, 3, "Mark", "John", "Emma", 4, "Peter")

print('Original list: ', my_list)
print('ID of object in memory: ', id(my_list))


my_list(4) = "Anna"
my_list.append("Dan")


print('Changed list: ', my_list)
print('ID of object in memory: ', id(my_list))

اجرای این کد نتیجه می دهد:

Original list:  (1, 2, 3, 'Mark', 'John', 'Emma', 4, 'Peter')
ID of object in memory:  140024176315840
Changed list:  (1, 2, 3, 'Mark', 'Anna', 'Emma', 4, 'Peter', 'Dan')
ID of object in memory:  140024176315840

این حقیقت که my_list به همان شی در حافظه اشاره می کند (140024176315840) در ادامه نشان می دهد که لیست ها چگونه هستند قابل تغییر.

لیست های پایتون حتی می توانند توابع را در یک دنباله ذخیره کنند:

def f1():
    return "Function one"

def f2():
    return "Function two"

def f3():
    return "Function three"

list_of_functions = (f1, f2, f3)
print(list_of_functions)

که منجر به:

(<function f1 at 0x0000016531807488>, <function f2 at 0x00000165318072F0>, <function f3 at 0x0000016531807400>)

خروجی ما شامل توابع در آدرس های داده شده است. حالا بیایید سعی کنیم به یک تابع دسترسی پیدا کنیم و آن را اجرا کنیم:

print(list_of_functions(0)())

از آنجایی که اولین عنصر این لیست است f1()، ما انتظار داریم که مناسب باشد print() بیانیه برای اجرا:

Function one

لیست ها رایج ترین نوع آرایه ها در پایتون هستند. آنها آسان برای استفاده و بصری هستند. علاوه بر این، پیچیدگی زمانی آنها برای دسترسی به عناصر است O (1).

تاپل های پایتون

آ چندتایی در پایتون است غیر پویا (اندازه ثابت) به صورت پویا تایپ شده است (عناصر به یک نوع محدود نمی شوند)، و تغییرناپذیر (عناصر را نمی توان در جای خود تغییر داد).

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

my_tuple = (1, 2, 3, "Mark", "John", "Emma")
print(my_tuple)

از آنجایی که تاپل ها هستند به صورت پویا تایپ شده است، می توانیم عناصری از انواع مختلف در آنها داشته باشیم:

(1, 2, 3, 'Mark', 'John', 'Emma')

از آنجایی که تاپل ها هستند غیر پویا، آنها یک اندازه ثابت دارند و ما نمی توانیم append() عناصر به آنها در محل، از آنجایی که این تغییر اندازه آنها. بنابراین، تاپل ها یک ندارند append() روش.

با این حال، می‌توانیم یک تاپل جدید متشکل از تاپل‌های کوچک‌تر ایجاد کنیم که باز هم اندازه ثابتی دارد:

my_tuple = (1, 2, 3)
another_tuple = ("Mark", "John", "Emma")
print('Original tuple: ', my_tuple)
print('ID of object in memory: ', id(my_tuple))

my_tuple = my_tuple + another_tuple
print('New tuple: ', my_tuple)
print('ID of object in memory: ', id(my_tuple))

ما همان مرجع متغیر را به یک شی جدید ایجاد کرده ایم تا حاوی هر دو تاپل با هم باشد – حتی اگر متغیر مرجع یکسان است، به یک شی کاملاً متفاوت در حافظه اشاره می کند:

Original tuple:  (1, 2, 3)
ID of object in memory:  139960147395136

New tuple:  (1, 2, 3, 'Mark', 'John', 'Emma')
ID of object in memory:  139960147855776

پیچیدگی زمانی برای دسترسی به موارد در یک تاپل نیز وجود دارد O (1).

رشته های پایتون

در پایتون 3، str نوع (مخفف رشته) از پایتون 2 بازنگری شده است. در پایتون 2، هم متن و هم بایت را نشان می داد، اما از پایتون 3 – این دو نوع داده کاملاً متفاوت هستند.

آ رشته در پایتون است غیر پویا (اندازه ثابت) تایپ استاتیک (عناصر محدود به یک نوع) و تغییرناپذیر (عناصر را نمی توان در جای خود تغییر داد).

دنباله ای از بایت ها (با نویسه های قابل خواندن برای انسان)، که در داخل پرانتز قرار دارند "" برای تعریف رشته استفاده می شود:

my_str = "qwerty"
print(my_str)

این منجر به:

qwerty

ما می توانیم از طریق فهرست بندی آرایه استاندارد به عناصر دسترسی داشته باشیم، اما نمی توانیم آنها را تغییر دهیم:

print(my_str(0))
my_str(0) = "p"

این منجر به:

q
TypeError: 'str' object does not support item assignment

در واقع – رشته ها هستند بازگشتی. وقتی یک رشته را با استفاده از کاراکترها اعلام می کنیم – یک رشته برای هر شخصیت تشکیل می شود که سپس به لیستی از رشته های تشکیل دهنده اضافه می شود یک رشته دیگر.

my_str طول آن 5 است و از پنج رشته مجزا تشکیل شده است 1:

my_str = "abcde"
print(len(my_str)) 
print(type(my_str)) 

print(my_str(0)) 
print(len(my_str(0))) 
print(type(my_str(0))) 

این نتیجه در:

5
<class 'str'>
a
1
<class 'str'>

هر دو “شخصیت” و رشته ما از یک کلاس هستند – str.

مشابه تاپل ها، می توانیم رشته ها را به هم متصل کنیم – که منجر به یک رشته جدید متشکل از دو رشته کوچکتر می شود:

my_str = "qwerty"
my_str2 = "123"

result = my_str + my_str2
print(result)

و نتیجه این است:

qwerty123

باز هم، رشته ها فقط از کاراکترها پشتیبانی می کنند و ما نمی توانیم در انواع دیگر ترکیب کنیم:

my_str = "qwerty"
my_str2 = 123

result = my_str + my_str2
print(result)

که منجر به:

TypeError: can only concatenate str (not "int") to str

با این حال، int، و همچنین هر نوع دیگری می تواند باشد بازیگران (تبدیل شده) به نمایش رشته ای:

my_str = "qwerty"
my_str2 = str(123) 

result = my_str + my_str2
print(result)

این منجر به:

qwerty123

با این روش می توانید از کار چاپ دور شوید، به عنوان مثال، intشن strings در همان خط:

my_str = "qwerty"
print("my_str's length is: " + len(my_str)) 

print("my_str's length is: " + str(len(my_str))) 

بایت های پایتون

بایت ها در پایتون هستند غیر پویا (اندازه ثابت) تایپ استاتیک (عناصر محدود به یک نوع) و تغییرناپذیر (عناصر را نمی توان در جای خود تغییر داد).

آ bytes شی از چندین بایت یا اعداد صحیح تشکیل شده است 0 به 255 (8 بیتی).

تعریف الف bytes شی کمی متفاوت از آرایه های دیگر است، زیرا ما به صراحت باید a را بفرستیم چندتایی به bytes:

my_bytes = bytes((0, 1, 2))
print(my_bytes)

این منجر به:

b'\x00\x01\x02'

اگر تاپل حاوی عناصری از انواع مختلف باشد، الف TypeError پرتاب می شود:

my_bytes = bytes((0, 1, 2, 'string'))
TypeError: 'str' object cannot be interpreted as an integer

هنگام کار با str اشیاء، آرایه ای از بایت ها باید باشد کدگذاری شده است با یک مجموعه نویسه، در غیر این صورت، در مورد اینکه آنها چه چیزی را نشان می دهند مبهم خواهد بود:

my_str = "This is a string"

my_bytes = bytes(my_str) 

my_bytes = bytes(my_str, 'utf-8')
print(my_bytes) 

اگر با روش کارکرد بایت های رمزگذاری آشنا نیستید – راهنمای ما را بخوانید روی روش تبدیل بایت به رشته در پایتون

علاوه بر این، الف bytes آرایه ای از اعداد صحیح وقتی به نوع آرایه دیگری به نام the ریخته می شود می تواند تغییر پذیر باشد bytearray.

Python Bytearray

آ بایت آرایه در پایتون است پویا (اندازه غیر ثابت) تایپ استاتیک (عناصر محدود به یک نوع) و قابل تغییر (عناصر را می توان در جای خود تغییر داد).

my_byte_array = bytearray((0, 1, 2))

اکنون می‌توانیم عناصری را به این آرایه اضافه کنیم و همچنین یک عنصر را تغییر دهیم:

my_byte_array = bytearray((0, 1, 2))
print(my_byte_array)
print("ByteArray ID: ", id(my_byte_array))

my_byte_array.append(3)
print(my_byte_array)
print("ByteArray ID: ", id(my_byte_array))

my_byte_array(3) = 50
print(my_byte_array)
print("ByteArray ID: ", id(my_byte_array))

این نتیجه در:

bytearray(b'\x00\x01\x02')
ByteArray ID:  140235112668272

bytearray(b'\x00\x01\x02\x03')
ByteArray ID:  140235112668272

bytearray(b'\x00\x01\x022')
ByteArray ID:  140235112668272

همه اینها شناسه شی یکسانی دارند – اشاره به یک شیء در حافظه در حال تغییر.

آ bytearray را می توان به a bytes آرایه؛ با این حال، به خاطر داشته باشید که این یک عمل گران است که طول می کشد بر) زمان.

پایتون آرایه.آرایه

تا کنون با انواع داخلی کار کرده ایم. با این حال، نوع دیگری از آرایه وجود دارد، در array مدول.

این array است پویا (اندازه غیر ثابت) تایپ استاتیک (عناصر محدود به یک نوع) و قابل تغییر (درجا قابل تغییر است). ما باید صریحاً نوع مورد استفاده در an را یادداشت کنیم array و این انواع از نوع C هستند: اعداد صحیح 32 بیتی، اعداد ممیز شناور، دو برابر و غیره.

هر کدام از اینها یک نشانگر دارند – i برای اعداد صحیح، f برای شناورها، و d برای دو نفره بیایید یک آرایه عدد صحیح از طریق the بسازیم array مدول:

import array

my_array = array.array("i", (1, 2, 3, 4))

برخی از انواع مشابه C که بیشتر مورد استفاده قرار می گیرند:

c انواع

راهنمای دیکشنری پایتون

را فرهنگ لغت یک ساختار داده مرکزی در پایتون است. داده ها را در آن ذخیره می کند ارزش کلیدی جفت

به همین دلیل می توان آن را a نیز نامید نقشه، نقشه هش، یا الف جدول جست و جو.

چند نوع مختلف از فرهنگ لغت وجود دارد:

  • dict
  • collections.defaultdict
  • collections.OrderedDict
  • collections.ChainMap

دیکشنری ها متکی هستند روی هش ارزش ها، که شناسایی می کنند کلیدها برای عملیات جستجو آ قابل هشت شامل بسیاری از هش ارزش هایی که هرگز در طول عمر a تغییر نمی کنند قابل هشت.

نوع قابل درهم سازی و مقادیر هش

هر شی دارای یک هش ارزش، و hash() می توان از روش برای بازیابی آن استفاده کرد. این مقدار ثابت نیست و در زمان اجرا محاسبه می شود a == b، hash(a) همیشه برابر خواهد بود hash(b):

random_string = "This is a random string"
a = 23
b = 23.5
print(hash(random_string))
print(hash(a))
print(hash(b))

این کد به چیزی در این مسیر منجر می شود:

4400833007061176223
23
1152921504606846999

مقادیر عددی که برابر هستند، صرف نظر از نوع آنها، مقدار هش یکسانی دارند:

a = 23
b = 23.0
print(hash(a))
print(hash(b))

منجر می شود به:

23
23

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

دیکشنری پایتون

مطالب یک فرهنگ لغت (dict نوع) در بریس های مجعد تعریف می شوند {}. با توجه به جفت های کلید-مقدار، این نحو شبیه JSON است:

my_dict = {
    "name": "Mike James",
    "age": 32,
    "country": "United Kingdom"
}

یک فرهنگ لغت می تواند تعداد دلخواه جفت داشته باشد و کلیدها باید بدون هیچ کلید تکراری قابل هش باشند (کلیدهای تکراری منجر به هش یکسان می شود). در چنین مواردی، کلید اول رد می شود و فرهنگ لغت در واقع تنها حاوی کلید دوم خواهد بود.

از آنجایی که دیکشنری ها قابل تغییر هستند، می توانیم یک جفت کلید-مقدار جدید را فقط با «دسترسی» به یک کلید ناموجود و تنظیم مقدار آن اضافه کنیم:

my_dict("countries_visited") = ("Spain", "Portugal", "Russia")
print(my_dict)

این منجر به:

{'name': 'Mike James', 'age': 34, 'country': 'United Kingdom', 'countries_visited': ('Spain', 'Portugal', 'Russia')}

هسته پایتون dict احتمالاً بسیاری از مشکلات شما را حل می کند، اما اگر نه، چند نوع فرهنگ لغت وجود دارد که می توانند از یک کتابخانه وارد شوند به نام collections.

Python DefaultDict

مشکلی که هنگام استفاده از a dict در حال تلاش برای دسترسی به مقدار کلیدی است که وجود ندارد.

مثلاً در تظاهرات قبلی ما اگر دسترسی داشتیم print(my_dict("zip_code"))، ما یک KeyError: zip_code مانند zip_code وجود ندارد

این زمانی است defaultdict وارد بازی می شود، همانطور که الف را درخواست می کند default_factory – تابعی که در صورت عدم وجود کلید، مقدار پیش فرض را برمی گرداند. به این ترتیب، الف defaultdict هرگز نمی تواند یک را مطرح کند KeyError:

from collections import defaultdict 


def safe_function():
    return "Value not defined"

my_dict = defaultdict(safe_function)
my_dict("name") = "Mark James"
my_dict("age") = 32

print(my_dict("country")) 

این، همانطور که انتظار می رود، نتیجه می دهد:

Value not defined

تعریف کردن defaultdict ارزش ها با هسته متفاوت است dict کلاس زیرا هر جفت کلید-مقدار باید به صورت دستی تعریف شود که خسته کننده تر از دستور JSON مانند است.

خط زنجیره ای پایتون

این نوع فرهنگ لغت به ما امکان می دهد چندین دیکشنری را به یک دیکشنری متصل کنیم – آنها را به زنجیر بکشیم. هنگام دسترسی به داده ها، یک به یک کلید را جستجو می کند تا زمانی که آن را پیدا کند اولین یکی را اصلاح کنید:

from collections import ChainMap

my_dict1 = {
    "name": "Mike James",
    "age": 32
}

my_dict2 = {
    "name": "James Mike",
    "country": "United Kingdom",
    "countries_visited": ("Spain", "Portugal", "Russia")
}

my_dict_result = ChainMap(my_dict1, my_dict2)
print(my_dict_result)

این منجر به یک ChainMap:

ChainMap({'name': 'Mike James', 'age': 32}, {'name': 'James Mike', 'country': 'United Kingdom', 'countries_visited': ('Spain', 'Portugal', 'Russia')})

همچنین می توانیم کلیدهای تکراری را تعریف کنیم. 'name' در هر دو فرهنگ لغت وجود دارد. با این حال ، هنگامی که ما سعی می کنیم به 'name' کلید:

print(my_dict_result('name'))

آن را پیدا می کند اولین کلید تطبیق:

Mike James

همچنین، به خاطر داشته باشید که اینها هنوز هم می توانند a را افزایش دهند KeyError از آنجایی که ما اکنون با یک هسته کار می کنیم dict.

پایتون سفارش داد

توجه داشته باشید: از Python 3.6 ، فرهنگ لغت ها هستند درج شده به صورت پیش فرض.

را OrderedDict زمانی استفاده می‌شود که می‌خواهید ترتیب درج جفت‌های کلید-مقدار را در فرهنگ لغت حفظ کنید. dict نمی کند ضمانت این، و ممکن است در نهایت ترتیب درج متفاوتی نسبت به زمانی داشته باشید.

اگر این چیز مهمی نیست – می توانید به راحتی از یک فرهنگ لغت استفاده کنید. اما اگر این مهم است، مانند هنگام برخورد با تاریخ، شما می خواهید از OrderedDict بجای:

from collections import OrderedDict

ordered_dict = OrderedDict()
ordered_dict('a') = 1
ordered_dict('b') = 2
ordered_dict('c') = 3
ordered_dict('d') = 4
  
print(ordered_dict)

این نتیجه در:

OrderedDict((('a', 1), ('b', 2), ('c', 3), ('d', 4)))

توجه داشته باشید: بااینکه dict اشیاء ترتیب درج را از پایتون 3.6 حفظ می کنند – استفاده کنید OrderedDict در صورت نیاز به سفارش درج. کد شما نمی خواهد اگر از نسخه معمولی استفاده می کنید، ترتیب درج را در سایر نسخه های پایتون (نسخه های قبلی) تضمین کنید dict.

روشهای فرهنگ لغت در مقابل روشهای آرایه

حالا که به کارها رسیدیم، باید تمام روش هایی را که این دو نوع در آنها پیاده سازی کرده اند پوشش دهیم. چهار عملیات اساسی وجود دارد که می توان روی داده ها انجام داد: دسترسی (دریافت)، به روز رسانی، اضافه کردن، و حذف.

بیایید یک آرایه و فرهنگ لغت تعریف کنیم که با آن آزمایش خواهیم کرد:

example_dict = {
    "id": 101,
    "name": "Marc Evans",
    "date_of_birth": "13.02.1993.",
    "city": "Chicago",
    "height": 185,
}

example_array = (1, 2, 3, "red", "green", "yellow", "blue", 4)

دریافت داده

فرهنگ لغت

چندین راه برای دسترسی به داده ها در فرهنگ لغت وجود دارد:

  • مراجعه به یک نام کلیدی – my_dict("key_name"):

    print(example_dict("name")) 
    
    
  • تماس گرفتن با get() روش – my_dict.get("key_name"):

    print(example_dict.get("city")) 
    
    
  • دسترسی به تمام کلیدها در یک فرهنگ لغت – my_dict.keys() – لیستی از کلیدها را برمی گرداند:

    print(example_dict.keys()) 
    
    
  • دسترسی به تمام مقادیر در یک فرهنگ لغت – my_dict.values() – لیستی از مقادیر را برمی گرداند:

    print(example_dict.values()) 
    
    
  • دسترسی به همه جفت های ارزش کلیدی: my_dict.items() – یک جفت جفت با ارزش کلیدی را برمی گرداند:

    print(example_dict.items()) 
    
    
آرایه

فقط یک راه برای دریافت داده از یک آرایه وجود دارد:

به روز رسانی داده ها

فرهنگ لغت

2 روش برای به روزرسانی داده ها در یک فرهنگ لغت وجود دارد:

  • تنظیم مستقیم یک مقدار جدید روی یک کلید خاص – my_dict("key") = new_value:

    example_dict("height") = 190
    print(example_dict("height")) 
    
    
  • تماس گرفتن با update() روش – my_dict.update({"key": new_value}) – استدلال های روش باید یک فرهنگ لغت باشد:

    example_dict.update({"height": 190})
    print(example_dict("height")) 
    
    
آرایه

اگر یک آرایه قابل تغییر باشد، می توان آن را به روشی مشابه دریافت داده تغییر داد:

  • با مراجعه به شاخص یک عنصر و تعیین مقدار متفاوت: my_array(index_number) = new_value

    example_array(3) = "purple" 
    print(example_array) 
    
    

داده ها را اضافه کنید

فرهنگ لغت

2 روش برای افزودن داده به فرهنگ لغت وجود دارد:

  • تنظیم یک مقدار برای یک کلید جدید، که به طور خودکار یک جفت کلید-مقدار ایجاد می کند و آن را اضافه می کند: my_dict("new_key") = value:

    example_dict("age") = 45
    print(example_dict) 
    
    
  • تماس گرفتن با update() روش – my_dict.update({"new_key": value}):

    example_dict.update({"age": 45}) 
    
آرایه

چند راه برای افزودن داده به یک آرایه وجود دارد (البته، یک آرایه باید قابل تغییر باشد):

  • تماس گرفتن با append() روش – my_array.append(new_element) – اضافه می کند new_element تا پایان my_array:

    example_array.append("gray")
    print(example_array) 
    
    
  • فراخوانی یک روش insert()my_array.insert(index_number, new_element) – درج الف new_element در موقعیت index_number:

    example_array.insert(0, 0) 
    print(example_array)
    
    
  • تماس گرفتن با extend() روش – my_array.extend(my_array2) – عناصر را درج می کند my_array2 تا پایان my_array:

    example_array2 = (5, 6)
    example_array.extend(example_array2)
    print(example_array)
    
    

حذف داده ها

فرهنگ لغت

روش های مختلفی برای حذف داده ها از فرهنگ لغت وجود دارد:

  • فراخوانی یک روش pop()my_dict.pop("key_name") – نام کلیدی را می گیرد که باید حذف شود

    example_dict.pop("name")
    print(example_dict)
      
    
    
  • تماس گرفتن با popitem() روش – my_dict.popitem() – در پایتون 3.7+، آخرین جفت کلید-مقدار اضافه شده را حذف می کند و در نسخه های پایتون زیر 3.7 یک جفت کلید-مقدار تصادفی را حذف می کند:

    example_dict.popitem()
    print(example_dict)
      
    
    
  • استفاده کردن del کلمه کلیدی – del my_dict("key_name")

    del example_dict('name')
    print(example_dict)
      
    
      
    
    del example_dict
    print(example_dict)
      
    
    
  • تماس گرفتن با clear() روش – my_dict.clear() – فرهنگ لغت را خالی می کند، اما همچنان به صورت یک فرهنگ لغت خالی وجود خواهد داشت {}

    example_dict.clear()
    print(example_dict)
      
    
    
آرایه

چند راه برای حذف داده ها از یک آرایه وجود دارد:

  • فراخوانی یک روش pop()my_array.pop(index_number) – حذف یک عنصر در مشخص شده index_number:

    example_array.pop(2)
    print(example_array)
      
    
    
  • تماس گرفتن با remove() روش – my_array.remove(value) – اولین مورد را با موارد مشخص شده حذف می کند value:

    example_array.remove(2)
    print(example_array)
      
    
    
  • فراخوانی یک روش clear()my_array.clear() – درست مانند یک فرهنگ لغت، همه عناصر را از یک آرایه حذف می کند و یک آرایه خالی می گذارد ():

    example_array.clear()
    print(example_array)
      
    
    

نتیجه

در این راهنمای جامع، ما شروع کردیم روی یک فرو رفتن عمیق در ساختارهای داده متنوع پایتون، به ویژه تمرکز روی آرایه ها و لغت نامه ها. کاوش ما ما را در دنیای فهرست پایتون، تاپل، رشته، بایت، بایت آرایه و آرایه.آرایه هدایت کرد که هر کدام نقاط قوت و موارد استفاده منحصر به فرد خود را نشان می‌دهند. در سمت فرهنگ لغت، پیچیدگی‌های انواع قابل هش، فرهنگ لغت بومی Python و دیگر ساختارهای دیکشنری مانند defaultdict، ChainMap و OrderedDict را بررسی کردیم.

انتخاب بین دیکشنری ها و آرایه ها صرفاً باینری نیست. بلکه مشروط به مشکل موجود است. دیکشنری ها برای مرتبط کردن کلیدها با مقادیر و بازیابی سریع داده ها با استفاده از آن کلیدها بسیار کارآمد هستند. آنها همه کاره هستند و امکان استفاده از انواع داده های مختلف را به عنوان کلید فراهم می کنند، مشروط بر اینکه قابل هش باشند. از سوی دیگر، آرایه‌ها (و ساختارهای آرایه‌مانند) متوالی و نمایه‌سازی شده‌اند، که آنها را برای داده‌های مرتب شده، عملیات عددی و زمانی که ترتیب عناصر مهم است، ایده‌آل می‌سازد.

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

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-10 17:34:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید