تخزين القواميس في Python باستخدام pickle و joblib
عندما يتعلق الأمر بتخزين البيانات في Python، فإن استخدام مكتبة NumPy يعد خيارًا شائعًا لتخزين وتحميل البيانات بشكل فعال. ومع ذلك، قد يكون هناك بعض التحديات عند محاولة تخزين وتحميل القواميس (المصفوفات الفرعية) باستخدام دوال np.save
و np.load
.
تشير القضية التي واجهتها إلى أن القاموس تم تحميله كمصفوفة NumPy بدلاً من كونه قاموسًا فعليًا، وهذا يؤدي إلى عدم القدرة على استخدام العمليات القاموسية العادية مثل get
.
لحل هذه المشكلة، يمكنك استخدام مكتبة أخرى مثل pickle
لتخزين القواميس بدلاً من NumPy، حيث تسمح pickle
بتخزين الأشياء بشكل أكثر تعميمًا، بما في ذلك القواميس. إليك كيفية استخدامها:
pythonimport pickle
# حفظ القاموس باستخدام pickle
with open('d1.pickle', 'wb') as f:
pickle.dump(d1, f)
# تحميل القاموس باستخدام pickle
with open('d1.pickle', 'rb') as f:
d2 = pickle.load(f)
# يمكنك الآن استخدام العمليات القاموسية بشكل طبيعي
print(d2.get('key2')) # ستعطي [50, 100]
باستخدام pickle
، يمكنك تخزين البيانات بتنوع أكبر، بما في ذلك القواميس، واستعادتها بكفاءة دون فقدان بنية البيانات الأصلية.
المزيد من المعلومات
علاوةً على ذلك، بالإضافة إلى مكتبة pickle
، يمكن استخدام مكتبة joblib
التي تأتي كجزء من مكتبة scikit-learn
، والتي توفر وظائف مماثلة لتلك المتوفرة في pickle
ولكن مع تحسينات في الأداء، خاصةً عند التعامل مع بيانات كبيرة.
فيما يلي كيفية استخدام joblib
لحفظ وتحميل القواميس:
pythonfrom joblib import dump, load
# حفظ القاموس باستخدام joblib
dump(d1, 'd1.joblib')
# تحميل القاموس باستخدام joblib
d2 = load('d1.joblib')
# يمكنك الآن استخدام العمليات القاموسية بشكل طبيعي
print(d2.get('key2')) # ستعطي [50, 100]
توفر joblib
وظائف مماثلة لـ pickle
وتتميز بالأداء الجيد عند التعامل مع البيانات الكبيرة، مما يجعلها خيارًا ممتازًا لتخزين واسترجاع البيانات في حالات الاستخدام حيث يكون الأداء أمرًا حاسمًا.
بالتالي، يمكنك استخدام إما pickle
أو joblib
لحفظ القواميس وغيرها من الهياكل البيانية في Python بشكل فعال وسهل الاستخدام، مما يسمح لك بالحفاظ على بياناتك واسترجاعها بسهولة دون فقدان التنسيق أو البنية الأصلية للبيانات.