وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

پایتون: اندازه دیکشنری را دریافت کنید

0 6
زمان لازم برای مطالعه: 3 دقیقه


معرفی

در این مقاله نگاهی خواهیم داشت چگونه اندازه یک دیکشنری را در پایتون پیدا کنیم.

اندازه فرهنگ لغت می تواند به معنای طول آن یا فضایی باشد که در حافظه اشغال می کند. برای یافتن تعداد عناصر ذخیره شده در فرهنگ لغت می توانیم از آن استفاده کنیم len() تابع.

برای یافتن اندازه یک دیکشنری در بایت می توانیم از getsizeof() عملکرد از sys مدول.

برای شمارش عناصر یک فرهنگ لغت تودرتو، می توانیم از یک تابع بازگشتی استفاده کنیم.

پیدا کردن اندازه فرهنگ لغت

را len() تابع به طور گسترده ای برای تعیین اندازه اشیاء در پایتون استفاده می شود. در مورد ما، ارسال یک شی دیکشنری به این تابع، اندازه دیکشنری یعنی تعداد جفت‌های کلید-مقدار موجود در فرهنگ لغت را برمی‌گرداند.

از آنجایی که این اشیاء طول خود را پیگیری می کنند، این عملیات دارای پیچیدگی زمانی O(1) است:

my_dict = {1: "a", 2: "b"}
print("The length of the dictionary is {}".format(len(my_dict)))

قطعه بالا این خروجی را برمی گرداند:

The length of the dictionary is 2

یافتن اندازه دیکشنری در بایت

اندازه حافظه شی دیکشنری بر حسب بایت را می توان با getsizeof() تابع. این تابع در دسترس است sys مدول. پسندیدن len()، می توان از آن برای یافتن اندازه هر شی پایتون استفاده کرد.

این به ویژه زمانی مفید است که به کدی نیاز داریم که باید عملکردی داشته باشد، و/یا نیاز به نظارت منظم دارد. بیایید مثال قبلی خود را در نظر بگیریم و به جای تعداد عناصر، اندازه یک فرهنگ لغت را در بایت بدست آوریم:

import sys

my_dict = {1: "a", 2: "b"}
print("The size of the dictionary is {} bytes".format(sys.getsizeof(my_dict)))

خروجی حاصل این است:

The size of the dictionary is 232 bytes

یافتن اندازه دیکشنری های تودرتو

دیکشنری تودرتو، فرهنگ لغت درون یک فرهنگ لغت یا فرهنگ لغت با سطوح مختلف جفت کلید-مقدار است. این دیکشنری‌های تودرتو به ساده‌سازی ساختارهای پیچیده مانند پاسخ‌های JSON از APIها کمک می‌کنند.

پیشنهاد می‌کنیم بخوانید:  روش نصب پایتون 3 روی CentOS 7

اینها چیزی در امتداد خطوط زیر به نظر می رسند:

{"dict1": {"dict2": "value 1"}}

با استفاده از len() برای به دست آوردن تعداد تمام جفت‌های کلید-مقدار کار نخواهد کرد زیرا اندازه شی را فقط برای سطح اول کلیدها می‌دهد. برای یافتن تعداد تمام کلیدهای تو در تو، می توانیم یک تابع بازگشتی سفارشی برای شمارش کلیدها بنویسیم. این تابع یک فرهنگ لغت و یک شمارنده را به عنوان آرگومان می گیرد و از طریق هر کلید تکرار می کند.

برای هر تکرار، تابع بررسی می کند که آیا نمونه کلید مورد نظر یک فرهنگ لغت است یا خیر. اگر درست باشد، با الحاق متغیر شمارنده به تابع، دوباره به صورت بازگشتی فراخوانی می شود counter+1 و گذراندن فرهنگ لغت تحت ارزیابی به عنوان استدلال.

این تابع بازگشتی پس از تکرار کامل وجود خواهد داشت و طول فرهنگ لغت را به عنوان متغیر برمی گرداند: counter.

اگر کلید یک نمونه فرهنگ لغت نیست، شمارنده به سادگی به آن اضافه می شود counter+1. تابع را برمی گرداند counter مقدار در نتیجه تکرار که اندازه فرهنگ لغت تحت ارزیابی را می دهد.

بنابراین، تعداد کلیدهای تو در تو با استفاده از این تابع مطابق شکل زیر ارزیابی می شود:

def count_keys(dict_, counter=0):
    for each_key in dict_:
        if isinstance(dict_(each_key), dict):
            
            counter = count_keys(dict_(each_key), counter + 1)
        else:
            counter += 1
    return counter

my_dict = {
       'Name':
           {
               'first_name': 'Sherlock',
               'Last_name': 'Holmes'
           },
       'Locality':
           {
           'Address':
               {
                   'Street': '221B Baker Street'
               },
           'City': 'London',
           'Country': 'United Kingdom'
           }
      }

print('The length of the nested dictionary is {}'.format(count_keys(my_dict)))

و هنگامی که قطعه اجرا می شود، خروجی زیر مربوط به تعداد کلیدهای موجود در فرهنگ لغت را دریافت می کنیم:

The length of the nested dictionary is 8

نتیجه

در این مقاله روش های محاسبه اندازه و طول دیکشنری ها و دیکشنری های تو در تو را بررسی کرده ایم.

پیشنهاد می‌کنیم بخوانید:  تعیین اندازه یک شی در پایتون

این توابع می توانند در ارائه اشیاء JSON از طریق API بسیار مفید باشند: سرورهای وب محدودیت هایی برای اندازه اشیاء JSON ارائه شده روی API ها اعمال می کنند و این توابع می توانند برای کنترل طول و اندازه مورد استفاده قرار گیرند.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-12 15:01:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید