پرسش

تبدیل یک رشته نمایشی از دیکشنری به دیکشنری

Convert a string representation of a dictionary to a dictionary

چطور می‌تونم یک رشته که نمایش‌دهنده‌ی یک دیکشنری در پایتون هست رو به خود دیکشنری تبدیل کنم؟ مثلاً اگر رشته‌ای دارم به شکل "{'key1': 'value1', 'key2': 'value2'}"، چطور می‌تونم این رو به یک دیکشنری پایتونی تبدیل کنم؟

1403/06/05
پاسخ
رضا دولتی عاشق برنامه نویسی و هوش مصنوعی!
بیوگرافی رضا دولتی

برای تبدیل یک رشته نمایشی از دیکشنری به خود دیکشنری در پایتون، می‌تونی از تابع ast.literal_eval استفاده کنی. این تابع از ماژول ast هست که برای ارزیابی ایمن رشته‌هایی که ساختار داده‌های پایتون رو نمایش می‌دن، طراحی شده. این روش ایمن‌تر از استفاده از eval هست، چون فقط اجازه می‌ده تا ساختارهای داده‌ای معتبر پایتون (مثل لیست‌ها، دیکشنری‌ها، اعداد و ...) رو ارزیابی کنه.

مثال :

import ast
# This is the string representation of the dictionary
dict_str = "{'key1': 'value1', 'key2': 'value2'}"
# Using ast.literal_eval to safely convert the string to a dictionary
dict_obj = ast.literal_eval(dict_str)
# Now dict_obj is a dictionary
print(dict_obj)  # Output: {'key1': 'value1', 'key2': 'value2'}

این کد رشته‌ای که به شکل یک دیکشنری هست رو به خود دیکشنری تبدیل می‌کنه. با استفاده از ast.literal_eval مطمئن می‌شی که فقط ساختارهای داده‌ای معتبر و امن در پایتون تبدیل می‌شن و از اجرای کدهای خطرناک جلوگیری می‌شه.

اگر رشته‌ای داری که دقیقاً نمایانگر دیکشنری پایتون هست، این روش رو پیشنهاد می‌کنم. در غیر این صورت، اگر رشته دارای مشکلات فرمت باشه، اول باید اونا رو اصلاح کنی.

حتماً حواست باشه که این روش فقط برای رشته‌هایی که دقیقاً ساختار دیکشنری پایتون رو دارن کاربرد داره و برای رشته‌های نادرست یا پیچیده‌تر ممکنه نیاز به پردازش‌های اضافی داشته باشی.

پاسخ: 1403/06/05
آخرین آپدیت: 1403/08/08