תרגול sorted עם key

אני לא מבין למה עדיין השמות שנקלטו באותיות גדולות מופיעות לפני הקטנות…

טוב השאלה הזו די מגניבה בעיקר כי מה שמתבצע פה זה לא ממש מה שחשבת שיקרה.

התהליך הוא כזה: אתה מנסה בסופו של דבר למיין את הרשימה ["zelda","avi","boaz","tomer"]. בשלב הזה אין משמעות למי התחיל עם אותיות גדולות ומי עם קטנות. אז למה זה בכל זאת ככה? יד הגורל שגרמה לך לבחור שמות שיסתדרו ככה בגלל סיבה אחרת - בגלל הפונקציה שבחרת להיות זו שלפיה תסדר. בחרת את sorted, אז בוא נראה מה בעצם קורה.

בגלל שבחרת את sorted, המיון נעשה לא על פי הערך הלקסיקוגרפי של השמות, אלא על פי הערך ש-sorted מחזירה על כל אחד מהם. אז מה sorted מחזירה על שם? רשימה ממוינת של האותיות המרכיבות אותו. כך למשל אם תפעיל את sorted על “avi” תקבל ["a","i","v"] ואם תפעיל אותו על “boaz” תקבל ["a","b","o","z"]. עכשיו ההשוואה תתבצע על פי הרשימות המסודרות האלה, ובמקרה לגמרי אם תסתכל על הרשימות האלה תגלה שזה הסדר שיוצא - ראשית boaz עם שני התווים “a” ואחריו “b” הוא הראשון, אחריו zelda עם “a” ואז “d” ולאחר מכן “a” שלאחריו “i”, ורק אחרון חביב מי שאין לו אף “a” בשם.

3 לייקים

אז איך אני גורם לרשימה להסתדר לפי התו הראשון בכל איבר?

סידור לפי סדר לקסיקוגרפי זה מה שקורה באופן רגיל כשמשווים בין 2 מחרוזות, אתה פשוט צריך למצוא את הדרך להשוות את המחרוזות תוך התעלמות מהאם יש בהן אותיות קטנות או גדולות.