نحوه ذخیره دیکشنری در فایل در پایتون: آموزش ذخیره و خواندن دیکشنری

فهرست مطالب این نوشته
Toggleدیکشنری یکی از پرکاربردترین ساختارهای داده در پایتون است که برای ذخیره دادهها بهصورت کلید-مقدار استفاده میشود. اما وقتی بخواهیم این دادهها را در فایل ذخیره کنیم تا بعداً دوباره از آنها استفاده کنیم، چه روشهایی برای ذخیره دیکشنری در فایل در پایتون در اختیار داریم؟ در این مطلب چندین روش ذخیره و خواندن دیکشنری در فایل در پایتون را بررسی میکنیم. از ماژول pickle گرفته تا json، csv و ذخیره بهصورت متن ساده.

ساخت دیکشنری در پایتون
قبل از ذخیره دیکشنری در فایل در پایتون، باید یک دیکشنری بسازیم. روشهای مختلفی برای گرفتن ورودی دیکشنری در پایتون وجود دارد. برای مثال میتوان یک دیکشنری را مستقیماً تعریف کرد:
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
یا میتوان از ورودی کاربر برای ساخت دیکشنری در پایتون استفاده کرد:
person = {}
person[“name”] = input(“Enter name: “)
person[“age”] = int(input(“Enter age: “))
person[“city”] = input(“Enter city: “)
print(person)
همچنین، میتوان یک لیست از تاپلها را به دیکشنری تبدیل کرد:
data = [(“name”, “Sara”), (“age”, 22), (“city”, “Mashhad”)]
person = dict(data)
print(person)
نکته: تبدیل لیست به دیکشنری در پایتون از طریق تابع dict() و استفاده از ساختار دادهای مناسب مانند لیستهای توپل انجام میشود. همچنین میتوان از zip() برای ترکیب دو لیست بهعنوان کلید و مقدار استفاده کرد.
حال که با روشهای ساخت دیکشنری آشنا شدیم، به بررسی روشهای ذخیره آن در فایل میپردازیم.
متدهای دیکشنری در پایتون را بشناسید
قبل از اینکه سراغ روشهای ذخیره دیکشنری در فایل در پایتون برویم، بهتر است کمی بیشتر با متدهای دیکشنری در پایتون آشنا شویم. وقتی میخواهیم دیکشنری را در یک فایل ذخیره کنیم، احتمال دارد که بخواهیم فقط کلیدها یا مقدارهای خاصی را ذخیره کنیم.
مثلاً شاید نیازی به ذخیره تمام اطلاعات یک دیکشنری نداشته باشیم. متدهای keys() و values() کمک میکنند که بهتر دادههای مورد نیاز را فیلتر کنیم.
متدهای دیکشنری در پایتون شامل موارد زیر هستند:
- keys() برای دریافت کلیدها
- values() برای دریافت مقادیر
- items() برای دریافت زوجهای کلید-مقدار
- get() برای دریافت مقدار یک کلید خاص
- update() برای اضافه یا تغییر مقدارها
- pop() برای حذف یک کلید خاص
ذخیره دیکشنری در فایل در پایتون با pickle چگونه انجام میشود؟
ذخیره دیکشنری در فایل در پایتون با pickle ویژگیهای متعددی دارد که شامل:
- مناسب برای سریالایز کردن اشیاء پایتون
- پشتیبانی از ساختارهای پیچیده داده
البته یک عیبی که دارد، غیرقابل خواندن بودناش برای انسان است. (فایلهای باینری)
ذخیره دیکشنری در فایل با pickle
برای ذخیره دیکشنری در فایل در پایتون با pickle میتوانید از دستور زیر استفاده کنید:
import pickle
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.pkl”, “wb”) as file:
pickle.dump(person, file)
خواندن دیکشنری از فایل با pickle نیز به روش زیر انجام میشود:
import pickle
with open(“person.pkl”, “rb”) as file:
loaded_person = pickle.load(file)
print(loaded_person)
نکته: فایلهای pickle را نمیتوان مستقیماً خواند، چون اطلاعات را بهصورت باینری ذخیره میکنند.
ذخیره دیکشنری در فایل با json چگونه انجام میشود؟
از ویژگیهای ذخیره دیکشنری در فایل در پایتون به صورت json باید: قابل استفاده بودن در تبادل دادهها (APIها و وبسرویسها) و مناسب بودن برای ذخیره دادههای ساختاریافته را نام برد.
ذخیره دیکشنری در فایل json به وسیله دستورات زیر انجام میشود:
import json
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.json”, “w”) as file:
json.dump(person, file)
خواندن دیکشنری از فایل json نیز به شرح زیر صورت میگیرد:
import json
with open(“person.json”, “r”) as file:
loaded_person = json.load(file)
print(loaded_person)
نکته: json فقط از نوعهای دادهای ساده پشتیبانی میکند و برای ذخیره اشیای پیچیدهتر باید از json.dumps() و json.loads() استفاده کرد.
ذخیره دیکشنری در فایل CSV چگونه انجام میشود؟
توسعهدهندگان از روش ذخیره دیکشنری در فایل CSV به دلایل مختلفی استفاده میکنند. مناسب بودن برای دادههای جدولی یکی از این دلایل است و همچنین چون قابلیت خواندن و پردازش در اکسل را دارد، در میان توسعهدهندگان زیاد استفاده میشود.
محدودیتی که ذخیره دیکشنری در فایل CSV دارد این است که به صورت محدود از دادههای تو در تو پشتیبانی میکند.
دقت کنید که اگر دیکشنری شامل لیست یا دیکشنریهای تو در تو باشد، باید مقدارها را به فرمت قابل ذخیره تبدیل کنیم.
برای ذخیره دیکشنری در فایل CSV میتوانید کدی شبیه به کد زیر اجرایی کنید:
import csv
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.csv”, “w”, newline=””) as file:
writer = csv.DictWriter(file, fieldnames=person.keys())
writer.writeheader()
writer.writerow(person)
برای خواندن دیکشنری از فایل CSV نیز باید دستور زیر را وارد کنید:
import csv
with open(“person.csv”, “r”) as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
ذخیره دیکشنری به صورت متن ساده
در این قسمت، روشهای ذخیره دیکشنری در فایل در پایتون به صورت متن ساده را بررسی میکنیم.
۱. استفاده از json.dumps()
import json
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.txt”, “w”) as file:
file.write(json.dumps(person))
۲. استفاده از حلقه دستی
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.txt”, “w”) as file:
for key, value in person.items():
file.write(f”{key}: {value}\n”)
۳. استفاده از str()
person = {“name”: “Ali”, “age”: 25, “city”: “Tehran”}
with open(“person.txt”, “w”) as file:
file.write(str(person))
مقایسه روشهای ذخیره دیکشنری در پایتون
همانطور که مطالعه کردید، ذخیره دیکشنری در فایل در پایتون به روشهای مختلف انجام میشود که در این قسمت آنها را به طور کلی با هم مقایسه کردهایم.
روش ذخیرهسازی | فرمت خروجی | خوانایی برای انسان | پشتیبانی از ساختارهای پیچیده | امنیت |
---|---|---|---|---|
pickle | باینری | |||
json | متن | |||
csv | متن | |||
متن ساده | متن |
از کاربردهای دیکشنری در پایتون میتوانیم به ذخیره دادههای ساختاریافته، نگهداری تنظیمات برنامه، شمارش عناصر با استفاده از collections.Counter، پردازش دادههای JSON و ایجاد نگاشتهای کلید-مقدار در الگوریتمهای مختلف اشاره کنیم.
نتیجهگیری
در این آموزش، روشهای مختلف ذخیره دیکشنری در فایل در پایتون را بررسی کردیم. انتخاب روش مناسب به نیاز شما بستگی دارد. pickle برای کسانی است که امنیت و سرعت میخواهند. اگر خوانایی داده و سازگاری با سایر سیستمها مهم است، json پیشنهاد میشود و همچنین برای دادههای جدولی، csv و برای ذخیره ساده، متن معمولی را امتحان کنید.
آکادمی چابک دورههای مدرن و ساختاریافتهای در آموزش پایتون و روشهای ذخیرهسازی دیکشنری ارائه میکند که برای هر برنامهنویسی مناسب میباشد. برای کسب اطلاعات با کارشناسان ما تماس بگیرید.
منبع:
دیدگاهتان را بنویسید