ডিকশনারি

ডিকশনারি #

আমরা ইতিমধ্যে লিস্ট ও টাপল সম্পর্কে জেনেছি। দুটোই পাইথনের স্মার্ট ডাটা টাইপ। কিন্তু ডিকশনারি পাইথনের সবচেয়ে স্মার্ট ডাটা টাইপ। ডিকশনারিকে আমরা লিস্টের সাথে তুলনা করতে পারি। কিন্তু লিস্টের সাথে এর অমিল অনেক। যেমন বলা যায়, ডিকশনারি ডিক্লেয়ার করা হয় {} চিহ্ন দিয়ে। আর ডিকশনারিতে লিস্টের মত ইনডেক্স থাকে না, তার বদলে থাকে কী। কী হিসেবে স্ট্রিং, ইন্টিজার, টাপল ব্যবহার করা যায়। তবে ['key'] এরকম কিছু ব্যবহার করা যাবে না। লিস্টে যেমন ইনডেক্স নম্বর একটা ভ্যালুকে নির্দেশ করে ঠিক তেমনি করে ডিকশনারিতে একটা কী (Key) একটা ভ্যালুকে নির্দেশ করে। এই ভ্যালুটা স্ট্রিং, ইন্টিজার, ফ্লোট, লিস্ট, টাপল, ডিকশনারি যেকোন টাইপেরই হতে পারে। ডিকশনারিতে সবগুলো আইটেম কমার (,) মাধ্যমে একে অপর থেকে আলাদা থাকে। প্রতিটা আইটেমে তিনটা অংশ থাকে। প্রথম অংশে থাকে কী, মাঝের অংশে থাকে কোলন চিহ্ন (:) সেপারেটর হিসেবে আর শেষাংশে থাকে ভ্যালু। একটা ডিকশনারির প্রতিটা কী ইউনিক হবে, একটার সাথে অপরটা মিলতে পারবে না। তবে একই ভ্যালু কয়েকবার থাকতে পারে।

>>> a = {}
>>> a
{}
>>> type(a)
<class 'dict'>
>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> type(a)
<class 'dict'>

একটা কথা বলতে ভুলে গেছি। a = {} এরকম না করেও আরেকভাবে ডিকশনারি ডিক্লেয়ার করা যায়।

>>> a = dict()
>>> a
{}
>>> type(a)
<class 'dict'>

অ্যাক্সেস আইটেম #

লিস্টের মত করেই ডিকশনারির আইটেম অ্যাক্সেস করা যায়। পার্থক্য হল, লিস্টের ক্ষেত্রে [] এর ভিতর ইনডেক্স নম্বর ব্যবহার করতে হয় আর ডিকশনারির ক্ষেত্রে কী ব্যবহার করতে হবে। একটা উদাহরণ দেখা যাক:

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a['name']
'MD. Maksudur Rahman Khan'
>>> a['nickname']
'Maateen'
>>> a['email']
'[email protected]'
>>> a['phone']
'01711223344'

আপডেট ডিকশনারি #

ডিকশনারির কোন আইটেমকে আপডেট করা খুবই সহজ কাজ। শুধু ঐ কী তে নতুন ডাটা অ্যাসাইন করলেই চলে। যেমন:

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a['name'] = 'Muhammad Maksudur Rahman Khan'
>>> a
{'name': 'Muhammad Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}

একেবারে নতুন একটা আইটেম যোগ করতে চাইলে নতুন একটা কী-ভ্যালু পেয়ার যোগ করলেই হয়। যেমন:

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a['hometown'] = 'Barisal'
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'hometown': 'Barisal', 'phone': '01711223344'}

আচ্ছা, যদি কখনো একটা ডিকশনারির সব আইটেমকে অন্য একটা ডিকশনারিতে যোগ করার দরকার পরে? তখন আমরা update() ফাংশনটা ব্যবহার করব। যে ডিকশনারিটা যোগ করব সেটা এর ভিতর দিয়ে দিলেই কেল্লাফতে।

>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> b = {'hometown' : 'Barisal', 'fav_poet' : 'Nazrul'}
>>> a.update(b)
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'fav_poet': 'Nazrul', 'nickname': 'Maateen', 'email': '[email protected]', 'hometown': 'Barisal', 'phone': '01711223344'}

আশা করি বুঝেছি সবাই।

রিমুভ আইটেম, ডিকশনারি #

ডিকশনারি থেকে একটা আইটেমকে রিমুভ করার জন্য আমরা del স্টেটমেন্টকে ব্যবহার করতে পারি।

>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'hometown': 'Barisal', 'phone': '01711223344'}
>>> del a['phone']
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'hometown': 'Barisal'}

যদি একটা ডিকশনারির সবগুলো আইটেমকে এক ঝটকায় রিমুভ করে ফেলতে চাই clear() ফাংশনটা কাজের জিনিস।

>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'hometown': 'Barisal'}
>>> a.clear()
>>> a
{}

আর যদি গোটা ডিকশনারি সমেত সব খাইয়া দিতে চাই? তাহলে? তাহলেও সেই del স্টেটমেন্টের প্রয়োগ বাঞ্ছনীয়।

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

পুরো ডিকশনারিটা খাইয়া দেয়ার কারণে পাইথন NameError থ্রো করেছে। বলতেছে যে আমরা নাকি a নামে কোন ডিকশনারি ভ্যারিয়েবল ডিফাইনই করি নাই। হা হা হা!

কিছু ফাংশনের (মেথড) প্রয়োগ #

copy() #

এই ফাংশনটা কোন ডিকশনারির একটা পূর্ণাঙ্গ কপি রিটার্ন করে।

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a.copy()
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}

get(key, default=None) #

এই ফাংশনটা মূলত স্ট্রিংয়ে কোন কী সার্চ করে সেটার ভ্যালু পাবার জন্য ব্যবহার করা হয়। যদি কী ডিকশনারিতে না থাকে তবে একটা ডিফল্ট ভ্যালু রিটার্ন করবে। প্রাথমিকভাবে এই ভ্যালুটা হল None মানে কিছুই না, তবে আমরা চাইলে এটাকে পরিবর্তন করে দিতে পারি।

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a.get('name')
'MD. Maksudur Rahman Khan'
>>> a.get('home')
>>> a.get('home', 'kicu nai')
'kicu nai'

has_key(key) #

কোন ডিকশনারিতে কোন নির্দিষ্ট কী আছে কিনা সেটা পরীক্ষা করার জন্য আমরা এই ফাংশনটা ব্যবহার করতে পারি। যদি কীটা থাকে তবে True রিটার্ন করবে, না থাকলে False রিটার্ন করবে। তবে আফসোসের কথা হল, এটাকে বাদ দিয়ে দেয়া হয়েছে। এটার কাজ আমরা একটু অন্যভাবে in দিয়ে করতে পারি।

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> 'name' in a
True
>>> 'home' in a
False

items() #

এই ফাংশনটা একটা ডিকশনারিকে লিস্ট হিসাবে রিটার্ন করে। লিস্টের ভিতর প্রতিটা আইটেম টাপল হিসাবে থাকে। প্রতিটা টাপলের 0 নম্বর ইনডেক্সে থাকে কী আর 1 নম্বর ইনডেক্সে থাকে ভ্যালু।

>>> a = {'name' : 'MD. Maksudur Rahman Khan', 'nickname' : 'Maateen', 'email' : '[email protected]', 'phone' : '01711223344'}
>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a.items()
dict_items([('name', 'MD. Maksudur Rahman Khan'), ('nickname', 'Maateen'), ('email', '[email protected]'), ('phone', '01711223344')])

keys() #

এই ফাংশনটা একটা ডিকশনারির সবগুলো কী লিস্ট হিসাবে রিটার্ন করে।

>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a.keys()
dict_keys(['name', 'nickname', 'email', 'phone'])

values() #

এই ফাংশনটা একটা ডিকশনারির সবগুলো ভ্যালু লিস্ট হিসাবে রিটার্ন করে।

>>> a
{'name': 'MD. Maksudur Rahman Khan', 'nickname': 'Maateen', 'email': '[email protected]', 'phone': '01711223344'}
>>> a.values()
dict_values(['MD. Maksudur Rahman Khan', 'Maateen', '[email protected]', '01711223344'])

এই পর্যন্তই থাক। অনেক তো হল। এবার প্রাকটিস করার পালা।

মন্তব্য করুন