البرمجة

فرز الأرقام في بايثون: التحول الصحيح للسلاسل النصية

في لغة البرمجة بايثون، يمكنك فرز قائمة تحتوي على أرقام مكتوبة على شكل سلاسل نصية باستخدام دالة الفرز sorted()، ولكن يبدو أنك واجهت مشكلة عند استخدام هذه الدالة. دعني أشرح لك السبب وأقدم لك حلاً.

عند استخدام sorted() أو list.sort() مع قائمة تحتوي على سلاسل نصية تمثل أرقامًا، يتم فرز السلاسل حسب القيم الرقمية للأحرف الفردية في السلسلة، وليس حسب القيم الرقمية الكاملة. وبما أن الأرقام في قائمتك هي سلاسل نصية، يتم فرزها بناءً على الأحرف الفردية، مما يؤدي إلى نتائج غير صحيحة.

لحل هذه المشكلة، يمكنك استخدام دالة key المدمجة في دالة sorted() لتحديد الوظيفة التي ستُستخدم لاسترداد القيم الرقمية من كل سلسلة نصية. في حالتنا، يمكننا استخدام int لتحويل السلاسل إلى أرقام صحيحة.

إليك كيف يمكنك تنفيذ ذلك:

python
key_s = ['115', '114', '117', '116', '111', '110', '113', '112', '68', '119', '118', '44', '45', '42', '43', '41', '76', '108', '109', '71', '107', '79', '13', '15', '14', '17', '16', '37'] # استخدام دالة sorted() مع معلم الوظيفة key=int sorted_key_s = sorted(key_s, key=int) # القائمة المفرزة print(sorted_key_s)

باستخدام key=int، ستقوم sorted() بتحويل كل سلسلة نصية إلى رقم صحيح قبل أدائها لعملية الفرز. وبهذا يمكنك الحصول على النتائج الصحيحة للقائمة المفرزة.

المزيد من المعلومات

بالطبع، دعونا نقوم بتوسيع نطاق المعلومات حول هذا الموضوع.

عندما تكون لديك قائمة من الأرقام في شكل سلاسل نصية في لغة البرمجة بايثون، يصبح من المهم فهم كيف يتم التعامل مع الفرز بشكل صحيح. في المثال السابق، قد قمت باستخدام sorted() مع وظيفة key=int لتحويل السلاسل النصية إلى أرقام صحيحة قبل عملية الفرز.

يمكن أن تكون هناك حالات أخرى تتعلق بالتحكم في اتجاه الفرز (تصاعديًا أو تنازليًا) أو تخصيص الفرز باستخدام وظائف مخصصة. على سبيل المثال:

  1. ترتيب تنازلي:
    يمكنك استخدام البارامتر reverse=True مع sorted() للحصول على ترتيب تنازلي للقائمة المفرزة.

    python
    sorted_key_s_desc = sorted(key_s, key=int, reverse=True) print(sorted_key_s_desc)
  2. استخدام دالة مخصصة للفرز:
    يمكنك تحديد دالة مخصصة لاستخدامها كوظيفة للفرز. على سبيل المثال، إذا كنت تريد فرز الأرقام وفقًا لعدد الأحرف في كل سلسلة:

    python
    sorted_key_s_custom = sorted(key_s, key=lambda x: len(x)) print(sorted_key_s_custom)

    في هذا المثال، تم استخدام وظيفة lambda لتحديد عدد الأحرف كمعيار للفرز.

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

زر الذهاب إلى الأعلى