دیکشنری در پایتون نوعی ساختمان داده است که کمک میکند تا دادهها را در یک ساختار کلید و مقدار ذخیره کنید. به این ترتیب به هر کلیدی که در دیکشنری وجود دارد یک مقدار اختصاص داده میشود و در ادامه شما میتوانید از طریق آن کلید به مقدار مدنظر دسترسی پیدا کنید. یکی از مزایای مهم دیکشنری این است که به شما اجازه میدهد تا با استفاده از یک حلقه روی آنها حرکت کرده و به مقادیر کلید و مقدار دسترسی پیدا کنید. از طرف دیگر شما میتوانید از طریق دو لیست مجزا از یکدیگر که یکی برای کلیدها و دیگری برای مقدارهاست دیکشنری خود را در زبان پایتون ایجاد کنید.
در بوت کمپ پایتون شما یاد میگیرید که چگونه به اندازه یک دیکشنری در این زبان دسترسی پیدا کرده و کل دادههای موجود در دیکشنری را تنها با یک دستور پاک کنید. از طرف دیگر میآموزید که میتوان با متد keys به تمام کلیدهای دیکشنری و با متد values به تمام مقادیر موجود در دیکشنری دسترسی پیدا کرد.
آشنایی با مفهوم دیکشنری در پایتون
در بوت کمپ برنامه نویسی یاد میگیرید که دیکشنری در پایتون یک ابزار بسیار کاربردی برای ذخیرهسازی اطلاعات و دادهها در زبان برنامهنویسی پایتون است که در واقع نوعی ساختمان داده در این زبان به شمار میآید.یکی از مزایای مهم استفاده از دیکشنری این است که امکان ذخیرهسازی اطلاعات و دادهها بهصورت پویا را برای شما فراهم کرده است. این بدان معناست که شما میتوانید کلیدها و مقادیری از انواع متفاوت را در آنها ذخیره کنید و نیازی نیست که تمامی دادههای ذخیره شده همگی از یک نوع باشند. برای اینکه درک بهتری از این مفهوم به دست بیاورید قطعه کد زیر را مشاهده کنید:
d = {
<key>: <value>,
<key>: <value>,
.
.
.
<key>: <value>
}

همانطور که مشاهده میکنید در اینجا d یک دیکشنری است که از کلیدها و مقادیر مختلف تشکیل شده است. حال فرض کنید که شما لیستی از کلید و مقدارهای متفاوت را در اختیار دارید. باید بدانید که در زبان پایتون این امکان برای شما فراهم شده که بتوانید کل این لیست را به طور یکجا به دیکشنری خود اضافه کنید که این کار به کمک قطعه کد زیر قابل انجام خواهد بود:
d = dict([
(<key>, <value>),
(<key>, <value),
.
.
.
(<key>, <value>)
])
پس از آنکه نحوه ساخت دیکشنری در پایتون را آموختید ممکن است بخواهید به یکی از مقادیر آن دسترسی پیدا کنید. در این شرایط میتوانید خیلی راحت کلید آن را به شکل زیر فراخوانی کنید:
d[key]
یک مثال کاربردی از ساخت و فراخوانی دیکشنری در زبان برنامهنویسی پایتون
برای تمرین دیکشنری در پایتون اجازه دهید تا یک مثال کاملا کاربردی را در اختیار شما قرار دهیم:
MLB_team = dict([
(‘Colorado’, ‘Rockies’),
(‘Boston’, ‘Red Sox’),
(‘Minnesota’, ‘Twins’),
(‘Milwaukee’, ‘Brewers’),
(‘Seattle’, ‘Mariners’)
])
به این ترتیب دیکشنری شما با نام MLB_team ایجاد شده است. حال اگر بخواهید به مقادیر آن دسترسی پیدا کنید کافی است که به شکل زیر عمل کنید:
MLB_team[‘Minnesota’]
با اجرای کد بالا مشاهده میکنید که خروجی Twins برای شما چاپ خواهد شد.
چگونه میتوانیم زوجهای جدید کلید و مقدار را به دیکشنری خود اضافه کنیم؟
وقتی که صحبت از آموزش دیکشنری در پایتون میشود باید بدانید که این امکان برایتان وجود دارد که زوجهای کلید و مقدار جدیدی را نیز به دیکشنری خود اضافه کنید. شما حتی میتوانید در ابتدا یک دیکشنری خالی ایجاد کرده و در ادامه بهصورت دستی یا کمک حلقهها بهصورت کاملا خودکار کلید و مقدارهایی را به دیکشنری خود اضافه کنید. برای اینکه به شکل بهتری با این مفهوم در دیکشنریها آشنا شوید قطعه کد زیر را به دقت بررسی کنید:
>>> person = {}
>>> type(person)
<class ‘dict’>
>>> person[‘fname’] = ‘Joe’
>>> person[‘lname’] = ‘Fonebone’
>>> person[‘age’] = 51
>>> person[‘spouse’] = ‘Edna’
>>> person[‘children’] = [‘Ralph’, ‘Betty’, ‘Joey’]
>>> person[‘pets’] = {‘dog’: ‘Fido’, ‘cat’: ‘Sox’}
همانطور که میبینید در اینجا ابتدا یک دیکشنری خالی به نام person ایجاد شده و در ادامه کلید و مقدارهایی به آن بهصورت دستی اضافه شدهاند.
اگر قطعه کد زیر را در پایتون اجرا کنید مشاهده خواهید کرد که دیکشنری person با تمام کلید و مقدارهایی که دارد برای شما چاپ خواهد شد:
person
پس خروجی شما چیزی بهصورت خروجی زیر خواهد بود:
{‘fname’: ‘Joe’, ‘lname’: ‘Fonebone’, ‘age’: 51, ‘spouse’: ‘Edna’,
‘children’: [‘Ralph’, ‘Betty’, ‘Joey’], ‘pets’: {‘dog’: ‘Fido’, ‘cat’: ‘Sox’}}
آیا امکان ایجاد حلقه روی دیکشنری وجود دارد؟
یکی از مهمترین مزایای استفاده از دیکشنری در پایتون این است که به شما اجازه میدهد تا بهصورت کاملا خودکار روی کلیدهای دیکشنری خود گذر کرده و به مقادیر آنها دسترسی پیدا کنید. وقتی که تعداد اعضای دیکشنری شما افزایش پیدا میکنند معمولا نمیتوان بهصورت دستی به مقادیر آن دسترسی پیدا کرد. در چنین شرایطی بهتر است از حلقهها برای دسترسی خودکار به زوجهای کلید و مقدار دیکشنری خود استفاده کنید:
dictionary = {‘key_1’: ‘value_1’, ‘key_2’: ‘value_2’, ‘key_3’: ‘value_3’}
for key in dictionary:
value = dictionary[key]
print(key, value)
اگر این قطعه کد را اجرا کنید مشاهده خواهید کرد که زوجهای کلید و مقداری که درون دیکشنری شما ذخیره شدهاند به طور کامل برای شما چاپ خواهند شد. حال شما میتوانید در این فرایند روی زوجهای کلید و مقدار خاصی که در دیکشنری وجود دارند شروطی را اعمال کرده و عملیاتی را نیز روی آنها انجام دهید.
پایتون یکی از زبان های برنامه نویسی گسترده است که یکی دیگر از موارد مربوط به آن که یادگیری آن بسیار به شما کمک میکند کار با ماژول در پایتون است.
چگونه میتوانیم زوج مرتبهای کلید و مقدار در دیکشنری را براساس کلید آنها مرتب کنیم؟
یکی دیگر از کاربردهای مهمی که دیکشنری در پایتون دارد این است که به شما اجازه میدهد تا خیلی راحت بتوانید دادههای ذخیره شده در این ساختمان داده را بهصورت کاملا خودکار مرتبسازی کنید. این مرتبسازی روی کلیدهای ذخیره شده در دیکشنری انجام میشوند. برای اینکه بتوانید با این تکنیک آشنا شده و از آن در کدهای خود به زبان برنامهنویسی پایتون استفاده کنید قطعه کد زیر را مشاهده کنید:
some_http_codes = {
404: ‘Not Found’,
401: ‘Unauthorized’,
400: ‘Bad Request’,
403: ‘Forbidden’,
402: ‘Payment Required’,
405: ‘Method Not Allowed’,
}
sorted_http_codes = dict(sorted(some_http_codes.items(),
key=lambda kv: kv[0],
reverse=False))
assert sorted_http_codes == {
400: ‘Bad Request’,
401: ‘Unauthorized’,
402: ‘Payment Required’,
403: ‘Forbidden’,
404: ‘Not Found’,
405: ‘Method Not Allowed’,
}
همانطور که مشاهده میکنید دیکشنری ما در ابتدا بهصورت نامرتب ذخیره شده بود و بعد از مرتبسازی مشاهده کردید که دادهها به شکلی مرتب براساس کلید آنها ذخیره شدهاند.
چگونه میتوان به اندازه یک دیکشنری دسترسی پیدا کرد؟
گاهی اوقات وقتی که در حال کارکردن روی یک پروژه هستید نیاز خواهید داشت که بتوانید اندازه دیکشنری خود را به دست آورده و بررسی کنید که چه تعداد زوج مرتب کلید و مقدار در آن ذخیره کردهاید؟ به همین علت نیز این موضوع به طور کامل در بوت کمپ برنامه نویسی به زبان پایتون بررسی شده و توضیحات مربوط به آن به شما ارائه خواهد شد. فرض کنید که قصد دارید چنین کاری را انجام دهید. در این شرایط میتوانید خیلی راحت از قطعه کد زیر استفاده کنید:
در گام نخست فرض کنید که ما دیکشنری خود را به شکل زیر تعریف کردهایم:
MLB_team = {
… ‘Colorado’ : ‘Rockies’,
… ‘Boston’ : ‘Red Sox’,
… ‘Minnesota’: ‘Twins’,
… ‘Milwaukee’: ‘Brewers’,
… ‘Seattle’ : ‘Mariners’
… }
حال اگر بخواهیم به مقدار آن دسترسی پیدا کنیم میتوانیم خیلی راحت از قطعه کد زیر استفاده کنیم:
len(MLB_team)
برای پاک کردن کل یک دیکشنری چه کار کنیم؟
یکی از مهمترین متد های دیکشنری در پایتون که باید حتما با آن آشنا شده و به شکلی اصولی از این متد استفاده کنید متد clear() است. این متد به شما اجازه میدهد تا بتوانید کلیه زوج مرتبهای کلید و مقداری که درون دیکشنری خود در زبان برنامهنویسی پایتون ذخیره کردهاید را پاک کنید. به این ترتیب میتوانید دادههای جدیدی را داخل دیکشنری خود قرار دهید بدون اینکه خود دیکشنری را پاک کرده باشید. برای اینکه به شکل بهتری با این کار آشنا شوید قطعه کد زیر را به دقت بررسی کنید:
>>> d = {‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> d
{‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> d.clear()
>>> d
{}
مقدار پیش فرض برای یک کلید در دیکشنری چیست؟
وقتی که در حال استفاده از دیکشنری در پایتون هستید احتمالا این سوال برای شما هم به وجود میآید که مقدار پیش فرض یک کلید در دیکشنریهای این زبان چیست؟ این موضوع یک موضوع کلیدی در برنامهنویسی به زبان پایتون است که بوت کمپ برنامه نویسی پایتون نیز به طور مفصل درباره آن صحبت شده و اطلاعاتی به شما ارائه میشود. در خصوص این موضوع باید بدانید که مقدار پیشفرض یک کلید در واقع همان مقدار پیشفرضی است که برای متغیر مقدار در نظر گرفته میشود. برای مثال اگر مقدار کلید شما از نوع int باشد مقدار پیشفرضی که برای آن در نظر گرفته میشود برابر 0 خواهد بود. برای درک هرچه بهتر این موضوع مثال زیر را بررسی کنید:
player_points = {
“Bob”: 1337,
“Alice”: 42,
}
def get_points_for_player(player_name: str) -> int:
if player_name in player_points:
return player_points[player_name]
return 0
get_points_for_player(“Bob”) # returns 1337
get_points_for_player(“Kevin”) # returns 0
همانطور که مشاهده میکنید در این مثال مقداری برای کلید Kevin در نظر گرفته نشده است و به همین علت مقداری که برای آن برگشت داده میشود برابر 0 خواهد بود.
دسترسی به تمامی کلیدهای یک دیکشنری در پایتون
یکی دیگر از مواردی که در زمان کارکردن با دیکشنری در زبان برنامهنویسی پایتون باید بدانید و در حین استفاده از پایگاه داده در پایتون نیز کاربردهای زیادی دارد دسترسی به تمام کلیدهایی است که درون یک دیکشنری ذخیره شدهاند. نکته مهمی که در این زمینه باید بدانید این است که زبان برنامهنویسی پایتون امکان دسترسی به این کلیدها را با استفاده از یک متد برای شما فراهم کرده است. متد keys() این امکان را در اختیار شما قرار میدهد. برای اینکه نحوه کارکردن با این متد را بیاموزید باید قطعه کد زیر را به دقت بررسی کنید:
>>> d = {‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> d
{‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> list(d.keys())
[‘a’, ‘b’, ‘c’]
از طرف دیگر نباید فراموش کنید که در حین کارکردن با دیکشنری در پایتون شما میتوانید به مقادیری که درون یک دیکشنری وجود دارند نیز دسترسی پیدا کنید. این کار از طریق متد values() صورت میگیرد. در قطعه کد زیر نحوه انجام این کار را به شما نشان دادهایم:
>>> d = {‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> d
{‘a’: 10, ‘b’: 20, ‘c’: 30}
>>> list(d.values())
[10, 20, 30]
چگونه با استفاده از دو لیست کلید و مقدار اقدام به ساخت یک دیکشنری در پایتون کنیم؟
گاهی اوقات ممکن است دیکشنری که شما قصد ایجاد آن را دارید بسیار طولانی باشد و نخواهید که این کار را بهصورت دستی انجام دهید. از طرف دیگر استفاده از حلقهها نیز در این شرایط ممکن است پیچیدگیهای زیادی را در کد شما ایجاد کند. در این حالت بهترین راهی که پیش روی شما قرار دارد این است که دو لیست را ایجاد کنید که یکی از آنها متعلق به کلیدهای دیکشنری شما بوده و دیگری نیز به مقادیر دیکشنری تعلق دارد. به این ترتیب با استفاده از این دو لیست میتوانید اقدام به ساخت یک دیکشنری در پایتون کنید. قطعه کد زیر به شما نشان میدهد که نحوه انجام این کار به چه شکل است:
def dict_from_two_lists(keys: list, values: list) -> dict:
if not len(keys) == len(values):
raise ValueError(“List of keys must have the same length as the list of values!”)
return dict(zip(keys, values))
names = [“Bob”, “Alice”, “Kevin”]
ages = [21, 42, 69]
ages_of_persons = dict_from_two_lists(keys=names, values=ages)
assert ages_of_persons == {
“Bob”: 21,
“Alice”: 42,
“Kevin”: 69,
}
پیشنهاد مقاله: آموزش کار با پایگاه داده در پایتون
سخن پایانی
کارکردن با دیکشنری در پایتون ممکن است در ابتدا بسیار سخت و دشوار به نظر برسد؛ ولی شاید برای شما جالب باشد که بدانید میتوانید این کار را به سادهترین شکل ممکن انجام دهید. دیکشنری یکی از ابزارهای مهم در پایتون است که به شما اجازه میدهد تا زوج مرتبهایی از کلیدها و مقادیر را ایجاد کرده و در هر زمان بتوانید از طریق کلیدهایی که تعریف کردهاید به مقادیر مدنظر خود دسترسی پیدا کنید. دیکشنری در زبان برنامهنویسی پایتون متدهای مختلفی را به شما ارائه میدهد که استفاده از آنها فرایند کدنویسی را در حین یادگیری برنامه نویسی برای شما راحتتر خواهد کرد.


