מה נכנס כאן ל D שבדוגמה של למבדה של מילון

תגיות:

שלום,
מה בעצם מגיע ל D בתור ערך? או איך, הרי צריך כל מפתח מהמילון לא?


תודה

הפונקציה sorted עושה איטרציה על משתנה איטרבילי מסויים. במקרה הזה על closet,
בזמן האיטרציה היא עוברת איבר איבר. ומפעילה עליו פונקציה (במקרה הזה הפונקציה האנונימית)

כלומר בכל פעם היא מעבירה לפונקציה איבר ועליו מבוצעת הפוקנציה.
אז כל פעם יש בפונקציה למבדה הזו איבר אחד שם מילון שמייצג איבר בארון.(חחח :slight_smile: )
והערך שחוזר ממנה הוא תאריך הלידה.

אחרי שיש לה את כל התאריכי לידה מכל האיברים (כלומר שהיא מסיימת לעבור על כולם ושומרת את התוצאות שהיא מקבלת בצד)
היא משווה ביניהם ומסדרת בהתאם. ככה שD במקרה הזה הוא כל פעם מילון של פריט בארון.

D כל פעם הוא ערך מהמילון , שורה שלמה אם כך , כן?

כן, זה כאילו דמייני את זה ככה:

def lambda(d):
    return d['year_of_birth']

כל פעם עבור איטרציה 1 במשתנה שעובר אל הפונקציה sorted

אז D הוא שורה גם לפי הפונקציה הזו, לכן עושים עליה כביכול איטרציות.
אז למה לכאורה לא יכלתי לכתוב במקום D , closet?

די d בשתי הפונקציות הוא שורה (איבר) מתוך Closet ולכן את לא יכולה לרשום אחד במקום השני.
שוב, closet הוא מילון שבו יש מספר ערכים כל ערך הוא מילון.
sorter עוברת על colset ו"שולפת" ממנו כל פעם איבר אחד כלומר מילון של פריט בארון.
עליו היא מפעילה את הפונקציה, ומקבלת ממנה ערך.
ככה היא עושה עבור כולם, ובסוף בעצם היא מקבלת את התאריך (במקרה הזה) של כל אלמנט ואלמנט במשתנה closet
לאחר מכן היא לוקחת את כולם ומסדרת אותם לפי הסדר של ההנתונים שהיא קיבלה (במקרה הזה התאריכים)

def function(d):
    return d['year_of_birth']

for d in closet:
    result = function(d)

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