"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إزالة القواميس المكررة بكفاءة من قائمة بايثون؟

كيفية إزالة القواميس المكررة بكفاءة من قائمة بايثون؟

تم النشر بتاريخ 2024-11-07
تصفح:296

How to Efficiently Remove Duplicate Dictionaries from a Python List?

القواميس الفريدة في قوائم بايثون

قوائم القواميس شائعة في تطبيقات بايثون. ومع ذلك، قد تكون إدارة القواميس المكررة أمرًا صعبًا. تتناول هذه المقالة كيفية إزالة التكرارات بكفاءة والحصول على قائمة بالقواميس الفريدة.

ضع في اعتبارك قائمة القواميس:

L = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

التعامل مع المشكلة

لإلغاء تكرار قائمة القواميس، يتضمن النهج المباشر تكرار القائمة ومقارنة كل قاموس بالقاموس الآخر. ومع ذلك، يمكن أن تكون هذه العملية مكلفة من الناحية الحسابية للقوائم الكبيرة.

استخدام قاموس مؤقت

يعمل الحل الأكثر كفاءة على تعزيز القاموس المؤقت للتعامل مع إلغاء البيانات المكررة. يتم تعيين مفتاح القاموس على حقل المعرف الخاص بكل قاموس، ويتم تعيين القيمة على القاموس نفسه. تقوم هذه العملية بتصفية التكرارات بشكل فعال لأن كل معرف فريد سيتوافق مع إدخال قاموس واحد فقط.

استرجاع القواميس الفريدة

بمجرد ملء القاموس المؤقت، سيتم حذف القيم (التي تمثل القواميس الفريدة) يمكن استرجاعها باستخدام طريقة القيم ().

تنفيذ بايثون

بايثون 2.7:

{v['id']:v for v in L}.values()

بايثون 3:

list({v['id']:v for v in L}.values())

Python 2.5/2.6:

dict((v['id'],v) for v in L).values()

تؤدي هذه الحلول المختصرة إلى قائمة من القواميس الفريدة:

[
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

يعمل هذا الأسلوب على إزالة التكرارات بكفاءة من خلال الاستفادة من القاموس المؤقت لتحديد واستخراج قيم القاموس الفريدة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3