قلب القواميس مع قيم القائمة: الحل
في هذه المقالة، نستكشف التحدي المتمثل في قلب القاموس مع قيم القائمة. بالنظر إلى قاموس الفهرس حيث المفاتيح هي أسماء الملفات والقيم هي قوائم الكلمات التي تظهر في تلك الملفات، فإننا نهدف إلى إنشاء قاموس مقلوب حيث الكلمات هي مفاتيح والقيم هي قوائم أسماء الملفات.
وظيفة الانعكاس المتوفرة، invert_dict، لا ينطبق على القواميس التي تحتوي على قيم قائمة كمفاتيح، لأنه يفشل مع الخطأ "TypeError: unhashable type: 'list'". ينبع هذا القيد من حقيقة أن المفاتيح في القواميس يجب أن تكون قابلة للتجزئة، والقوائم غير قابلة للتجزئة.
للتغلب على هذه العقبة، يمكننا استخدام نهج مخصص يتكرر من خلال القاموس الأصلي وينشئ قاموسًا جديدًا باستخدام setdefault . على وجه التحديد، نقوم بالتكرار من خلال قوائم القيم لكل مفتاح في القاموس الأصلي ونضيف المفاتيح المقابلة كقيم لتلك الكلمات في القاموس المقلوب الجديد.
إليك مثال لتطبيق هذا النهج:
inverse = {}
for k,v in index.items():
for x in v:
inverse.setdefault(x, []).append(k)
يعالج هذا الحل قيم القائمة في القاموس الأصلي باستخدام الأسلوب setdefault لإنشاء قائمة جديدة إذا كان المفتاح غير موجود في القاموس المقلوب، أو إلحاقه بقائمة موجودة إذا كان المفتاح موجودًا بالفعل.
ونتيجة لذلك، حصلنا على قاموس مقلوب حيث الكلمات هي المفاتيح والقيم هي قوائم أسماء الملفات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3