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

السؤال

نشر

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

أقوم بترتيب أبجدي باستخدام الدلة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...