পাইথন ডিকশনারি মেমরিতে বাকেট (bucket) অ্যারে হিসেবে স্টোর হয়। প্রতিটি বাকেটে থাকে:
- অবজেক্টের হ্যাশ কোড (কলিশন রেজোলিউশনের কারণে পজিশন থেকে প্রেডিক্ট করা যায় না)
- কী অবজেক্টের পয়েন্টার
- ভ্যালু অবজেক্টের পয়েন্টার
মেমরি খরচ (প্রতি এন্ট্রি)
- ৩২-বিট মেশিন: কমপক্ষে ১২ বাইট (৩ × ৪ বাইট পয়েন্টার/ইন্ট)
- ৬৪-বিট মেশিন: কমপক্ষে ২৪ বাইট (৩ × ৮ বাইট)
রিসাইজিং স্ট্র্যাটেজি
- শুরুতে ৮টি খালি বাকেট
- ক্ষমতা পূর্ণ হলে বাকেট সংখ্যা ডাবল হয় (২x)
- এটি অ্যামোর্টাইজড O(1) ইনসারশন নিশ্চিত করে
অতিরিক্ত ওভারহেড
- খালি বাকেটও মেমরি নেয় (স্পার্স অ্যালোকেশন)
- কী এবং ভ্যালু অবজেক্ট আলাদা মেমরিতে থাকে (রেফারেন্স কাউন্টিং)
- স্ট্রিং কী ইন্টার্নিং (interning) হলে মেমরি বাঁচায়
নোট: sys.getsizeof(dict) শুধু ডিকশনারি অবজেক্টের সাইজ দেয়, কী/ভ্যালু অবজেক্টের সাইজ দেয় না।