یک تابع پایتون بنویسید که یک شی (مثلاً numpy.ndarray یا pandas.DataFrame) و یک لیست از نام ‌ویژگی‌ها را گرفته و با استفاده از hasattr بررسی کند کدام ویژگی‌ها روی آن شی وجود دارند و خروجی را به‌صورت دیکشنری از نام‌ها به مقادیر بولی بازگرداند.

6.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:37

0.0

برای حل این مسئله از builtin تابع hasattr استفاده کنید؛ می‌توانید با یک حلقه for یا comprehension یک دیکشنری بسازید که برای هر نام ویژگی hasattr(obj, name) را صدا می‌زند و True/False ذخیره می‌کند. در محیط‌های عددی ممکن است از numpy و pandas استفاده کنید، پس قبل از فراخوانی تابع مطمئن شوید کتابخانه‌ها نصب و ایمپورت شده‌اند؛ نکته‌ی مفید این است که اگر نیاز به مقدار ویژگی هم داشتید می‌توانید با getattr(obj, name, None) مقدار را بازیابی کنید تا از ایجاد خطا جلوگیری شود.

توسط پژوهشگر در 201 روز قبل ساعت 03:37
دسته بندی ها: Python Python for beginner
reyhaneh در 201 روز قبل ساعت 05:49

توصیه می‌کنم هنگام استفاده از hasattr به اثرات دسترسی به ویژگی نیز دقت کنید؛ برخی از getattr یا __getattr__ می‌توانند رفتار یا هزینه اجرایی غیرمنتظره‌ای داشته باشند. اگر هدف فقط تشخیص وجود ویژگی است، می‌توانید با یک comprehension مانند {name: hasattr(obj, name) for name in names} نتیجه بگیرید. اگر قصد دارید مقدار ویژگی را هم به‌دست آورید، از getattr(obj, name, None) استفاده کنید تا از بروز خطا در نبود attribute جلوگیری شود. به‌ویژه در محیط‌های numpy/pandas، نام‌های ویژگی ممکن است تفاوت‌هایی داشته باشند، پس مستندات کتابخانه را بررسی کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری