التعامل بكفاءة مع الكائنات المكررة باستخدام Python
في Python، قد يكون من الضروري إزالة الكائنات المكررة من القائمة مع الحفاظ على الترتيب الأصلي. تنشأ هذه المشكلة عندما يكون لديك قائمة بالكائنات المخصصة وترغب في تصفية التكرارات بناءً على معايير معينة أو التحقق من التكرارات في قاعدة بيانات.
فيما يتعلق بمتطلباتك المحددة، تحتاج إلى تحديد التفرد داخل الكائنات الخاصة بك لاستخدامها بفعالية طريقة المجموعة (list_of_objects). يتضمن ذلك جعل كائناتك قابلة للتجزئة من خلال تطبيق أساليب eq وhash.
تحدد طريقة eq المساواة بين الكائنات. على سبيل المثال، إذا كان لديك كائنات كتاب لها سمات اسم المؤلف والعنوان، حيث يكون مزيج المؤلف والعنوان فريدًا، فقد تبدو الطريقة eq كما يلي:
def __eq__(self, other):
return self.author_name == other.author_name and self.title == other.title
وبالمثل، يقوم الأسلوب hash بإنشاء قيمة تجزئة للكائن. تتمثل الطريقة الشائعة في تجزئة مجموعة من السمات الرئيسية:
def __hash__(self):
return hash(('title', self.title, 'author_name', self.author_name))
باستخدام هذه الطرق، يمكنك الآن إزالة التكرارات من قائمة كائنات الكتاب:
books = [Book('title1', 'author1'), Book('title2', 'author2'), Book('title1', 'author1')]
unique_books = list(set(books))
علاوة على ذلك، للتحقق من التكرارات في قاعدة البيانات، يمكنك استخدام الطريقة التالية:
import sqlalchemy
session = sqlalchemy.orm.sessionmaker()()
records = session.query(YourModel).all()
existing_titles = set([record.title for record in records])
unique_objects = [obj for obj in objects if obj.title not in existing_titles]
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3