বাংলায় পাইথন
  • পরিচিতি
  • ইনস্টলেশন
  • ব্যাসিক কনসেপ্ট
    • সাধারণ কিছু অপারেশন
    • আরও কিছু নিউমেরিক অপারেশন
    • স্ট্রিং
    • ব্যাসিক ইনপুট আউটপুট
    • স্ট্রিং অপারেশন
    • টাইপ কনভার্সন
    • ভ্যারিয়েবল
    • ইনপ্লেস অপারেটর
    • এডিটর এর ব্যবহার
  • কন্ট্রোল স্ট্রাকচার
    • বুলিয়ান
    • if স্টেটমেন্ট
    • else স্টেটমেন্ট
    • বুলিয়ান লজিক
    • অপারেটর প্রেসিডেন্স
    • while লুপ
    • লিস্ট
    • লিস্ট অপারেশন
    • লিস্ট ফাংশন
    • রেঞ্জ
    • for লুপ
  • গুরুত্বপূর্ণ ডাটা টাইপ
    • None
    • ডিকশনারি
    • ডিকশনারি ফাংশন
    • টাপল
    • আবারও লিস্ট
    • লিস্ট ও ডিকশনারি কম্প্রিহেনশন
  • ফাংশন ও মডিউল
    • কোডের পুনব্যবহার
    • ফাংশন
    • ফাংশন আর্গুমেন্ট
    • ফাংশন রিটার্ন
    • কমেন্ট ও ডক স্ট্রিং
    • অবজেক্ট হিসেবে ফাংশন
    • মডিউল
    • স্ট্যান্ডার্ড লাইব্রেরী
    • pip
  • ফাইল ও এক্সেপশন
    • এক্সেপশন
    • এক্সেপশন হ্যান্ডেলিং
    • finally
    • এক্সেপশন Raise
    • Assertions
    • ফাইল খোলা
    • ফাইল পড়া
    • ফাইলে লেখা
    • ফাইল নিয়ে সঠিক কাজ
  • ফাংশনাল প্রোগ্রামিং
    • ভূমিকা
    • ল্যামডা
    • ম্যাপ ও ফিল্টার
    • জেনারেটর
    • ডেকোরেটর
    • রিকারসন
    • সেট
    • itertools
  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
    • ক্লাস
    • ইনহেরিটেন্স
    • ম্যাজিক মেথড
    • অপারেটর অভারলোডিং
    • অবজেক্ট লাইফ সাইকেল
    • ডাটা হাইডিং
    • স্ক্লাস মেথড ও ট্যাটিক মেথড
    • প্রোপার্টিস
  • রেগুলার এক্সপ্রেশন
    • পরিচিতি
    • মেটা ক্যারেক্টার
    • ক্যারেক্টার ক্লাস
    • গ্রুপ
    • স্পেশাল সিকুয়েন্স
  • অতিরিক্ত কিছু বিষয়
    • পাইথনিকনেস
    • PEP
    • main
    • # -- coding: utf-8 --
    • #! /usr/bin/env python
    • CPython
    • ডকুমেন্টেশন পড়া
  • প্যাকেজিং
Powered by GitBook
On this page
  1. গুরুত্বপূর্ণ ডাটা টাইপ

ডিকশনারি

এর আগে আমরা লিস্ট সম্পর্কে জেনেছি যেটা এমন এক ধরণের ডাটা স্ট্রাকচার যার মধ্যে এলিমেন্ট গুলো ক্রমিক ইনডেক্স অনুযায়ী সাজানো থাকে। ডিকশনারি আরেক ধরণের ডাটা স্ট্রাকচার যার মধ্যেও লিস্টের মত বিভিন্ন রকম এলিমেন্ট বা অবজেক্ট স্টোর করা যায় - কিন্তু, এ ক্ষেত্রে ওই এলিমেন্ট গুলোকে ম্যানুয়ালি ইনডেক্স করতে হয়। অন্যভাবে বলতে গেলে, আমাদের নিজেদেরকেই প্রত্যেকটা এলিমেন্টের বা value এর জন্য একটি key বা ইনডেক্স নির্ধারণ করে দিতে হয়। অতঃপর একটি key-value জোড় ওয়ালা এলিমেন্টের কালেকশন তৈরি হয়।

দুটি কার্লী ব্র্যাকেট {} এর মধ্যে কোলন চিহ্ন দিয়ে key-value জোড় তৈরি করে এবং প্রত্যেক জোড় কে কমা , দিয়ে আলাদা করে একটি ডিকশনারি তৈরি করা যায়। নিচের মত করে।

my_marks = {"Bengali": 80, "English": 85, "Math": 90}

আবার ফাকা ডিকশনারি তৈরির জন্য এভাবে লিখলেই সেটি ইনিসিয়ালাইজ হয়ে যায় - my_dictionary = {}

ডিকশনারির প্রত্যেকটি এলিমেন্টকে অ্যাক্সেস করার নিয়ম লিস্টের মতই। লিস্টে যেমন থার্ড ব্র্যাকেট এর মধ্যে ইনডেক্স দিয়ে উক্ত ইনডেক্সের ভ্যালু পাওয়া যেত, তেমনি এর ক্ষেত্রেও ইনডেক্সের যায়গায় key ব্যবহার করে, এর সাথে জোড় হিসেবে থাকা ভ্যালুটাকে অ্যাক্সেস করা যাবে।

উদাহরণ,

my_marks = {"Bengali": 80, "English": 85, "Math": 90}
print(my_marks["Math"])

আউটপুট,

90

কি - ভ্যালুর নিয়ম ডিকশনারির মধ্যে যেকোনো টাইপের অবজেক্ট বা এলিমেন্টকেই স্টোর করা যায় শুধু মাত্র এর key গুলো হতে হবে Immutable (অপরিবর্তনীয়) টাইপের যেমন নিচের মত করে একটি ডিকশনারি তৈরি করা যেতে পারে -

my_marks = {"Bengali" : [30, 35, 32], "English" : [45, 52, 33], "Math": [60, 74, 58]}

অর্থাৎ প্রত্যেকটি key এর সাপেক্ষে ভ্যালু গুলো হচ্ছে এক একটি লিস্ট। এই ডিকশনারি থেকে নিচের মত করে ডাটা অ্যাক্সেস করা যাবে -

my_marks = {"Bengali" : [30, 35, 32], "English" : [45, 52, 33], "Math": [60, 74, 58]}
print(my_marks["Math"])

যার আউটপুট আসবে,

[60, 74, 58]

কিন্তু নিচের মত একটি ডিকশনারি হতে পারে না -

my_marks = {[30, 35, 32] : "Bengali", [45, 52, 33] : "English", [60, 74, 58] : "Math"}

এর আউটপুট হবে,

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

অর্থাৎ একটি লিস্ট যা কিনা একধরনের Mutable টাইপ তাকে কোন ডিকশনারির key হিসেবে ব্যবহার করা যাবে না। মজার জন্য চেক করতে পারি, যেহেতু bool টাইপও Immutable তাই নিচের মত একটা ডিকশনারিও কিন্তু হতে পারে -

my_marks = {True : "Bengali"}

এখন পর্যন্ত আমাদের আলোচিত অবজেক্ট গুলোর মধ্যে লিস্ট এবং ডিকশনারি হচ্ছে Mutable টাইপের

PreviousNoneNextডিকশনারি ফাংশন

Last updated 6 years ago