بکندباز

متد ‎update()‎‎ در پایتون

مثال

وارد کردن یک آیتم به دیکشنری:

car = {
  "brand": "Ford",
  "model": "Mustang",
   "year": 1964
}

car.update({"color": "White"})

print(car)

توضیحات

متد ‎update()‎‎ یک آیتم جدید به دیکشنری اضافه می کند. این آیتم می تواند یک دیکشنری یا یک شیء آرایه ای باشد.

سینتکس

dictionary.update(iterable)

مقادیر پارامتر ها

پارامتر توضیح
iterable آیتم جدید

 


اگر سوالی در رابطه با این تابع داری، می تونی توی بخش کامنت ها بپرسی:

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*

    منم پاسخ

    درمورد فرم های پایتون نیز میشد بگین که این متد با متدupdateidletasks() کاربرد دارن و فرم رو رفرش میکنن یجوری

    و جالبه ک بدونیم متد update() کاربرد بیشتری از خودش نشون میده

    شما میان فقط میگین بیا آ ی دیکشنری داریم ی مقداری بهش اضافه میکنیم:: مگهSql درس میدین

    محمدرضا پاسخ

    سلام من یه متغییر بنام a دارم که با لحقه for هر بار یک واحد به متغییر اضافه میکنم یعنی a=a+1  و یک دیکشنری دارم که با متد update که در همون حلقه for هست هر بار کد(a=a+1) را برابر با یک کلید در دیکشنری قرار میدم که دیکشنری بروز رسانی بشه و مشکل اینجا هست که متد update وقتی کلید دیکشنری رو برابر کد a=a+1 قرار میدم ، خطا میده یعنی فقط مقدار a رو قبول میکنه اما a=a+1 رو نمیتونه مقدار یک کلید در دیکشنری قرار بده  کد a=a+1 رو هم نمیتونم خارج از متد update قرار بدم چون بقیه کد به هم میرزه راهنمایی کنید لطفا
    mydict={"x":3}
    for i in range(6):
    a=a+1
    mydict.update({"x":a=a+1})

      zohreh پاسخ

      سلام. وقت بخیر

      مورد اول اینکه برای a مقدار دهی اولیه انجام ندادید و اولین ارورتون برای این خواهد بود.

      و بعد هم اینکه a =a+1 رو نیازی نیست توی update قرار بدید (و البته نباید). اگر قصدتون این هست که مقدار جدید a به جای مقدار کلید x قرار بگیره فقط کافیه متغیر a رو قرار بدید. چون قبلاً توی خط قبل یکبار مقدارش رو افزایش دادید.

      اگر هدفتون از این کد رو بفرمایید بیشتر می تونم توضیح بدم. الان این کد رو براتون اصلاح کردم ولی باز به نظر میاد کد صحیحی نیست. چون یک حلقه رو اجرا می کنید و در انتها کار خاصی انجام نمیشه. فقط مقدار x در دیکشنری برابر با مقدار آخرین حلقه میشه. که در این صورت اصلاً نیازی به حلقه نیست.

      mydict={"x":3}
      a = 3
      for i in range(6):
         a=a+1
         mydict.update({"x":a})
    محمدرضا پاسخ

    یه تمرین هست به این صورت که نتایج ۶ بازی گروهی از ۴ تیم رو از کاربر بصورت یک عدد ۲ رقمی میگیریم 
    رقم اول تیم سمت راست و رقم دوم تیم سمت چپ
    مثلا بازی (تیم۱_تیم۲)و(تیم۱_تیم۳)و(تیم۱_تیم۴)و(تیم۲_تیم۳)و(تیم۲وتیم۴)و(تیم۳_تیم۴)
    و در خروجی اسم تیم به همراه تعداد برد _ تعداد باخت _ تفاضل گل و امتیاز هر تیم را چاپ میکنیم
     
    من یه حلقه for درست کردم با range(6) چون ۶ تا بازی برگزار میشود و همچنین برای هر تیم یک دیکشنری درست کردم که تعداد برد و باخت و تفاضل گل و امتیاز هر تیم رو پس از هر بازی بروز رسانی کند
    هر بار که در حلقه نتیجه باز مشخص میشه باید دیکشنری هر تیم رو بر اساس نتیجه بازی بروز رسانی کنم 
    اما در بروز رسانی کردن دیکشنری مشکل دارم 
    و به این صورت که شما گفتید هم انجام دادم ولی به مشکل خورد
    ممنون میشم راهنمایی کنید 
     
     

      zohreh پاسخ

      خب اول اینکه از حلقه range(6) نباید استفاده کنید چون توی هر حلقه فقط یک ایندکس دارید و مشخص نمیشه نتایج کدوم دو تیم رو باید بگیرید. به جاش می تونید از همچنین حلقه ای استفاده کنید که توی خروجی این عدد ها رو میده:

      n = 4
      
      count = 0
      for i in range(1, n+1):
          for j in range(i+1, n+1):
              print(i,j)

      خروجی:

      1 2
      1 3
      1 4
      2 3
      2 4
      3 4

      در این صورت در هر حلقه دو تا عدد دارید که با استفاده از اینها می تونید از ورودی نتیجه مربوط به هر دو تیم رو به صورت یک عدد دو رقمی بگیرید. 

      n = 4
      
      count = 0
      for i in range(1, n+1):
          for j in range(i+1, n+1):
               x = input(f'enter result of team {i}-{j} ')

      بعد باید اون دو رقمی رو به دو تا یک رقمی تفکیک کنید و اعداد به دست اومده رو بررسی کنید. در اینجا یک دیکشنری تنها کافی نیست. باید یک لیستی از دیکشنری ها رو داشته باشید. یک لیست چهار تایی از دیکشنری ها که هر دیکشنری مربوط به یک تیم باشه. 

      scores = [
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس صفر برای تیم یک
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس یک برای تیم دو
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس دو برای تیم سه
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس سه برای تیم چهار
      ]

      در این صورت در حلقه قبلی، وقتی دو تا رقم رو به دست آوردید، با استفاده از اون، دیکشنری مربوط به اون تیم رو آپدیت می کنید. مثلاً اگر برای تیم 1 2 نتیجه 35 براتون ارسال شد یعنی تیم 1 سه امتیاز گرفته و تیم 2 پنج امتیاز. حالا باید به فیلد "loose" از دیکشنری 1، یک مقدار اضافه کنید چون این یک باخت برای تیم 1 هست. و به فیلد win از دیکشنری 2 یک مقدار اضافه کنید. همچنین به فیلد "score" از دیکشنری 1 سه مقدار اضافه کنید و به فیلد score از دیکشنری 2 پنج مقدار اضافه کنید و به همین شکل.

      سعی کردم کد رو کامل ننویسم و با توضیحات راهنمایی تون کنم. اما اگر در ساخت دیکشنری ها و ... مشکلی داشتید بفرمایید تا از طریق کد راهنمایی کنم.

      https://backendbaz.ir/online-editor/python/7447

    محمدرضا پاسخ

    خب الان سوال من اینجا هست که چطور باید دیکشنری رو مرتب کنم ؟؟؟
    فرض کنید تیم اول در بازی دوم ۳ امتیاز میگیرد حالا باید دیکشنری تیم اول رو بروز کنیم یعنی باید این سه امتیاز که گرفته رو با امتیازی که در بازی یا باز های قبل گرفته رو جمع کنیم 
    میخوام یه حلقه درست کنم که وقتی امتیاز تیم مشخص میشه دیکشنری خود به خود بروز بشه 
    مشکل من اینجاست که نمیتونم امتیاز تیم رو با امتیاز های قبلش جمع بزنم چون نمیتونم کلید دیکشنری رو برابر با( امتیاز =امتیازقبل +امتیازجدید) قرار بدم
    خلاصه در بروز رسانی دیکشنری مشکل دارم

    محمدرضا پاسخ

    شما در نظر داشته باشید که نتایج همه بازی ها رو دریافت کردید و در یک لیست قرار میدهید ( ۶ تا بازی انجام شده )
    حالا میخواید یه حلقه درست کنید که روی این لیست حرکت کنه و طبق نتیجه ای که حاصل شده امتیاز تیم ها رو بروز کنه پس یه حلقه با range(6) داریم
    اما مشکل من بروز کردن دیکشنری هر تیم هس 

      zohreh پاسخ

      به روز رسانی دیکشنری رو باید به این صورت انجام بدید (به صورت مثال):

      scores = [
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس صفر برای تیم یک
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس یک برای تیم دو
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس دو برای تیم سه
          {'loose': 0, 'win': 0, 'score': 0}, # ایندکس سه برای تیم چهار
      ]
      
      #اضافه کردن یک مقدار به تعداد باخت های تیم 1
      scores[0]['loose'] = scores[0]['loose'] + 1
      # کم کردن سه امتیاز از تعداد امتیاز های تیم 1
      scores[0]['score'] = scores[0]['score'] - 3
      
      print(scores)

       

    kosar پاسخ

    میتونم چیزی که میخوام ب دیکشنریم اضافه کنم رو از ورودی بگیرم/؟؟؟؟ 

      zohreh پاسخ

      بله می تونید. به این کد دقت کنید:

      student = {
         'name': 'zohreh',
         'course': 'python'
      }
      age = input("Enter your age: ")
      student['age'] = age
      
      print(student)