اذهب إلى المحتوى
  • 0

كيفية عمل ترتيب أبجدي على عناصر نصوص المصفوفة في بايثون ؟

Jafar Ali

السؤال

كيف يمكنني ترتيب عناصر المصفوفة ترتيب أبجدي صحيح ؟

أقوم بترتيب أبجدي باستخدام الدلة sort :

names = ['Ali', 'ahmad', 'Mohammad', 'malik']

names.sort()

print(names)

ولكن النتيجة غير متوقعة :

# أجد النتيجة
['Ali', 'Mohammad', 'ahmad', 'malik']

# بدلا من
#['Ali', 'ahmad', 'malik', 'Mohammad']

ما السبب ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

تستخدم الدلة sort  ترتيب ASCIIbetical بدلاً من الترتيب الأبجدي الفعلي لترتيب نصوص المصفوفة ، وهذا يعني أن الكلمات ذات الأحرف الكبيرة تأتي أولًا ، اذا كنت تريد الترتيب الصحيح من غير الاهتمام في حالة الأحرف إن كانت كبيرة ام صغيره عليك أن تستعمل str.lower هكذا :

names.sort(key=str.lower)

عندها ستجد النتيجة :

['Ali', 'ahmad', 'malik', 'Mohammad']
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا 
يمكنك فعل ذلك بالعديد من الطرق مثلا 

  • باستخدام الدالة sort 
    names = ['Ali', 'ahmad', 'Mohammad', 'malik']
    
    names.sort()
    
    print(names)

    هذا الكود صحيح ولكن لان يوجود حروف capital و small تكون اﻷولية للحروف capital  . لان ترتيب A هو 065 أما a 097 يمكنك زيارة هذا رابط لمعرفة ذلك http://sticksandstones.kstrom.com/appen.html 
    604ff9ca20aa9_Screenshotfrom2021-03-1602-20-14.png.0c1921de63e02a52b45d56ceb36a69a7.png

    باستخدام الدالة sort  ولكن جعل حروف أما capital أو small 

    names = ['Ali', 'ahmad', 'Mohammad', 'malik']
    
    names.sort(key= str.lower)
    print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad']
    names.sort(key= str.upper)
    print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad']

     

  • sort باستخدام lambda و lower أو upper 

    names = ['Ali', 'ahmad', 'Mohammad', 'malik']
    
    names.sort(key=lambda y: y.lower())
    
    print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad']
    
    names = ['Ali', 'ahmad', 'Mohammad', 'malik']
    
    names.sort(key=lambda y: y.upper())
    
    print(names) # ['ahmad', 'Ali', 'malik', 'Mohammad']

     

  • sorted عن طريق lower أو upper 

    names = ['Ali', 'ahmad', 'Mohammad', 'malik']
    
    sorted_list = sorted(names, key=lambda s: s.lower())
    print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad']
    
    sorted_list = sorted(names, key=lambda s: s.upper())
    print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad']

     

  • sorted باستخدام casefold يمكنك معرفة المزيد من هنا https://docs.python.org/3/library/stdtypes.html#str.casefold

names = ['Ali', 'ahmad', 'Mohammad', 'malik']

sorted_list = sorted(names, key=str.casefold)
print(sorted_list) # ['ahmad', 'Ali', 'malik', 'Mohammad']

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لأننا نقوم بالتعامل مع أسماء أشخاص, هنالك حيلة يمكننا استخدامها و هي أن نقول بجعل جميع الأحرف الأولى من كل إسم Uppercase و باقي الأحرف Lowercase.

names = ['Ali', 'ahmad', 'Mohammad', 'malik']

for i in range(len(names)):

  names[i] = names[i].capitalize() #هذا التابع يقوم بجعل أول حرف كبير و يجعل باقي الحروف صغيرة

names.sort()

print(names)


 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...