שימוש במשתנה בתור key ל-kwargs

תגיות:

מישהו מכיר דרך להכניס משתנה בתור key לkwargs?

def func(**kwargs):

pass

key_name = 'my_key'

func(key_name='value')

אני רוצה בעצם שהמילון שייצא מזה ייראה ככה:

{'my_key': 'value'}

תודה!

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

לייק 1

ניסיתי אבל זה יוצא קצת מכוער וקצת לא אינטואיטיבי. קיוויתי למצוא פתרון יפה יותר מזה :slight_smile:

תודה!

הנה הדרך היפה! החכמתי ללא ספק

לייק 1

האמת שקראתי את זה, אצלך זה נותן את מה שחיפשת?

לא בטוחה שהבנתי מה אתה מנסה לעשות.

kwargs הוא בעצמו מילון. אתה רוצה לפרק אותו כדי לבנות אותו?

לצורך העניין אני רוצה לערוך ערכים במילון בעזרת הפונקציה הזאת.
אז אם אני רוצה לערוך את המפתחות a,b,c הייתי רוצה לעשות משהו כזה:

func(a=7, b=8, c=9)

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

func(f'{var_name}'=7)

שכולנו נסכים שזה מבלבל ומכוער :sweat_smile:

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

לקבל מילון ולקבל kwargs זה בעצם אותו דבר.

המפתחות a, b, c הם מפתחות קבועים במילון שלך, או משתנים?

אם קבועים - אז תעדכן לפי השם שלהם

אם משתנים, אז אין משמעות ל a,b,c ופשוט תקבל kwargs שהוא המילון שאתה רוצה להשתמש

לייק 1

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

במקום מה שכתבת למעלה, תכתוב:

{func({var_name: 7)

הדוגמא בסטאק מעולה!

לייק 1

זה בדיוק מה שהתכוונתי כאן :slight_smile:

מממ, אין דרך קלאסית אלגנטית לעשות את זה.
אפשר:

func(**{key_name: 'value'})
לייק 1