• 0

كيف أفرز قائمة من tuples حسب العنصر الثاني في بايثون؟

لدي قائمة من tuples وأريد أن أفرز هذه القائمة تصاعديا حسب القيم الموجودة في العنصر الثاني من tuple في القائمة، فما هي أسهل وأسرع هذه الطرق؟
شكل القائمة:

[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدة طرق لفرز قائمة اعتمادا على عنصر معين داخل tuples، فيمكنك استخدام كلمة key مع lambda داخل دالة sorted كما في المثال التالي:

sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x[1])

سوف تكون key في المثال السابق دالة تُعرف كيفية استرجاع العناصر القابلة للمقارنة من بنية البيانات الخاصة بالقائمة والتي ستكون في حالتنا هذه العنصر الثاني من tuple لذلك سوف نصل إليها عن طريق [1].
يمكنك استخدام طريقة أخرى أسرع وأفضل وهي عن طريق استخدام دالة itemgetter من وحدة operator كما في المثال التالي:

>>> from operator import itemgetter
>>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
>>> sorted(data,key=itemgetter(1))
[('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]


انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن