Python Data Types
Python Dictionary
Python Language এ Dictionary কি?
Python Language এ List এর মতই আরেকটি ডাটা স্ট্রাকচার হচ্ছে Dictionary., পার্থক্যটা হচ্ছে List এ থাকে বাই ডিফল্ট number index আর Dictionary তে থাকে Key. List এর index গুলো নিজে নিজেই তৈরী হয়, আর Dictionary এর key গুলোকে Manually বসিয়ে দিতে হয়। আরো সহজভাবে বলা যায় , Dictionary তে Data গুলো থাকে জোড়ায় জোড়ায়। আর জোড়ার মধ্যে প্রথম জিনিসটিকে বলে কি (key) আর দ্বিতীয় জিনিসটিকে বলে ভ্যালু (value)। Dictionary তে key হিসেবে string, integer এমনকি tuple ও ব্যবহার করতে পারবেন। List এ যেমন index নম্বর একটা value কে নির্দেশ করে ঠিক তেমনি করে Dictionary তে একটা কী (Key) একটা value কে নির্দেশ করে। এই value টা String, Integer, Float, List, Tuple ইত্যাদি যেকোন টাইপেরই হতে পারে। একটা Dictionary এর প্রতিটা key ইউনিক হতে হয়, অর্থাৎ , একটার সাথে অপরটা মিলতে পারবে না। তবে একই value কয়েকবার থাকতে পারে।
Dictionary কিভাবে তৈরী করা হয়?
(curly braces) { } ব্র্যাকেট এর মধ্যে ( : ) কোলন চিহ্ন দিয়ে key-value জোড় তৈরি করে এবং প্রত্যেক জোড় কে কমা ( , ) দিয়ে আলাদা করে একটি Dictionary তৈরি করা যায় । এ ছাড়াও আপনি dict() function দিয়েও Dictionary তৈরী করতে পারেন। চলুন কয়েকটি উদাহরণ দেখা যাক :
# empty dictionary my_dict = {} # dictionary with integer keys my_dict = {1: 'apple', 2: 'ball'} # dictionary with mixed keys my_dict = {'name': 'Maruf', 1: [2, 4, 3]} # using dict() my_dict = dict({1:'apple', 2:'ball'}) # from sequence having each item as a pair my_dict = dict([(1,'apple'), (2,'ball')])
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
Dictionary এর Item গুলোতে কিভাবে access করবেন?
Dictionary এর প্রত্যেকটি Element কে access করার নিয়ম List এর মতই। List এ যেমন [ ] থার্ড ব্র্যাকেট এর মধ্যে index দিয়ে উক্ত ইনডেক্সের value print করতে হয়, তেমনি Dictionary এর ক্ষেত্রেও থার্ড ব্র্যাকেট এর মধ্যে ইনডেক্সের যায়গায় key ব্যবহার করে উক্ত key এর value তে access করতে হয়। এ ছাড়া আপনি get() Method দিয়েও Dictionary Item গুলোতে access করতে পারেন। নিচের উদাহরণ লক্ষ্য করুন :
my_dict = {'name':'Jaber', 'age': 26} # Output: Jaber print(my_dict['name']) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # my_dict.get('address') # my_dict['address']
কিভাবে Dictionary তে পুরাতন Item Update বা নতুন Item add করবেন?
Dictionary তে কোন Item কে Insert বা Update করা খুবই সহজ কাজ। আর এর জন্য শুধু key দিয়ে তাতে নতুন ডাটা অ্যাসাইন করলেই হবে। যদি ঐ key ইতিমধ্যে থেকে থাকে তাহলে Dictionary Update হয়ে যাবে। আর যদি key টি পূর্ব থেকে না থেকে থাকে , তাহলে এটি নতুন Item হিসেবে Dictionary তে add হয়ে যাবে। যেমন:
my_dict = {'name':'Jahir', 'age': 26} # update value my_dict['age'] = 27 #Output: {'age': 27, 'name': 'Jahir'} print(my_dict) # add item my_dict['address'] = 'Dhaka,Bangladesh' # Output: {'address': 'Dhaka,Bangladesh', 'age': 27, 'name': 'Jahir'} print(my_dict)
Dictionary থেকে কোনো কিছু remove বা Delete করা
পাইথনে Dictionary থেকে এক বা একাধিক এমনকি পুরো Dictionary ডিলিট বা রিমোভ করে দিতে পারবেন। আর জন্য আছে pop(), popitem(), clear() মেথড । pop() মেথড মূলত একটি নির্দিষ্ট key ধরে যেকোনো আইটেম কে রিমুভ বা রিটার্ন করার জন্য ব্যবহার হয়। আর popitem() দিয়ে random বা arbitrary আইটেম রিমুভ অথবা রিটার্ন করতে পারবেন। আর সব আইটেম একসাথে রিমুভ করার জন্য আপনি clear() Method ব্যবহার করতে পারবেন। এছাড়াও আপনি del কীওয়ার্ড দিয়ে একটি নির্দিষ্ট dictionary item অথবা পুরো dictionary কে Delete করে দিতে পারেন। নিচের উদাহরণ দেখুন :
# create a dictionary squares = {1:1, 2:4, 3:9, 4:16, 5:25} # remove a particular item # Output: 16 print(squares.pop(4)) # Output: {1: 1, 2: 4, 3: 9, 5: 25} print(squares) # remove an arbitrary item # Output: (1, 1) print(squares.popitem()) # Output: {2: 4, 3: 9, 5: 25} print(squares) # delete a particular item del squares[5] # Output: {2: 4, 3: 9} print(squares) # remove all items squares.clear() # Output: {} print(squares) # delete the dictionary itself del squares # Throws Error # print(squares)
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
Python Dictionary Methods
Dictionary নিয়ে বিভিন্ন কাজ করার জন্য Method গুলোর List নিচে বিস্তারিত দেওয়া হলো। যার অনেকগুলোরই বিস্তারিত উপরে আলোচনা হয়েছে।
Method | Description |
---|---|
clear() | Dictionary থেকে সব Item রিমুভ করার জন্য ব্যবহৃত হয়। |
copy() | Dictionary কে copy করার জন্য ব্যবহৃত হয়। |
fromkeys(seq[, v]) | নতুন একটি Dictionary তৈরী করবে , যেখানে value গুলো হবে key , এবং প্রত্যেকটি key এর ডিফল্ট value হবে none. |
get(key[,d]) | Dictionary তে একটি নির্দিষ্ট Key এর বিপরীতে তার value return করবে , আর যদি ঐ key না থাকে, তাহলে none return করবে। |
items() | Dictionary এর Item গুলোর নতুন view object হিসেবে key value দেখাবে। |
keys() | Dictionary এর Item গুলোর key দিয়ে একটা নতুন view দেখাবে । |
pop(key[,d]) | Dictionary এর একটি নির্দিষ্ট Item এর key সহ remove করা |
popitem() | Random বা arbitrary আইটেম রিমুভ অথবা রিটার্ন করতে পারবেন |
setdefault(key[,d]) | Dictionary কোনো নির্দিষ্ট key থাকলে সেটির value কে রিটার্ন করবে , অন্যথায় একটি key ভ্যালু সহ set করবে। . |
update([other]) | Dictionary কোনো নির্দিষ্ট Item কে update করার কাজে লাগে । |
values() | Dictionary এর শুধু value গুলোকে রিটার্ন করবে । |
চলুন উপরে যেইসব Method গুলোর ব্যবহার দেখানো হয়নি সেগুলো সব একসাথে দেখা যাক :
# random sales dictionary sales = { 'apple': 2, 'orange': 3, 'grapes': 4 } #dict_values([2, 3, 4]) print(sales.values()) person = {'name': 'Masud Alam', 'age': 22} age = person.setdefault('age') #person = {'age': 22, 'name': 'Masud Alam'} print('person = ',person) #Age = 22 print('Age = ',age) person = {'name': 'Masud Alam', 'age': 22, 'salary': 3500.0} #dict_keys(['age', 'name', 'salary']) print(person.keys()) #dict_keys([]) empty_dict = {} print(empty_dict.keys()) # random sales dictionary sales = { 'apple': 2, 'orange': 3, 'grapes': 4 } #dict_items([('apple', 2), ('orange', 3), ('grapes', 4)]) print(sales.items()) # vowels keys keys = {'a', 'e', 'i', 'o', 'u' } vowels = dict.fromkeys(keys) #{'i': None, 'e': None, 'u': None, 'o': None, 'a': None} print(vowels) original = {1:'one', 2:'two'} new = original.copy() #Orignal: {1: 'one', 2: 'two'} print('Orignal: ', original) #New: {1: 'one', 2: 'two'} print('New: ', new)
Python Dictionary Comprehension
একটা iterable List থেকে নতুন একটি Dictionary তে রূপান্তর করার পদ্ধতিকে Dictionary Comprehension বলা হয়। আমরা যদি লিস্ট থেকে একটা ডিকশনারি বানাতে চাই, যেখানে প্রথমটি Key এবং পরেরটি Value তাহলে সাধারণ নিয়মে এভাবে কোড লিখব:
squares = {} for x in range(6): squares[x] = x*x #{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} print(squares)
আর এটাকে আমরা Dictionary তে রূপান্তর করার জন্য নিচের মতো code করবো।
squares = {x: x*x for x in range(6)} # Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} print(squares)
এমনকি আমরা dictionary comprehesion এর ভিতরে if ও ব্যবহার করতে পারি।
odd_squares = {x: x*x for x in range(11) if x%2 == 1} # Output: {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} print(odd_squares)
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
অন্যান্য dictionary Operations
Dictionary এর ভিতরে কোনো key আছে কিনা তা চেক করার জন্য আমরা in Operator ব্যবহার করতে পারি।
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Dictionary এর ভিতরে প্রত্যেকটি key কে for loop দিয়ে iterate করতে পারি।
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} for i in squares: print(squares[i])
Dictionary এর কিছু Built-in Function List
Dictionary নিয়ে বিভিন্ন কাজ করার জন্য সাধারণ কিছু function নিচে সেগুলোর বিস্তারিত দেওয়া হলো।
Function | Description |
---|---|
all() | Dictionary এর সব element যখন true, তখন এটি true return করবে। |
any() | Dictionary এর যেকোনো element যখন true, তখন এটি true return করবে। |
len() | Dictionary এর Length return করবে |
sorted() | নতুন একটি sorted Dictionary return করবে। |
cmp() | দুইটি Dictionary Item এর মধ্যে compare করবে। |
চলুন নিচে কয়েকটির উদাহরণ দেখা যাক :
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} # Output: 5 print(len(squares)) # Output: [1, 3, 5, 7, 9] print(sorted(squares))
পাইথনে Nested Dictionary কি?
পাইথনে যখন একটি Dictionary এর মধ্যে একাধিক Dictionary থাকে তখন এটাকে Nested Dictionary বলে। চলুন একটা Nested Dictionary তৈরী করা যাক :
people = {1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Nahida', 'age': '22', 'sex': 'Female'}} print(people)
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
{ 1: {'age': '27', 'sex': 'Male', 'name': 'Borhan'}, 2: {'age': '22', 'sex': 'Female', 'name': 'Nahida'} }
ব্যাখ্যা: উপরের প্রোগ্রামে $people হচ্ছে একটা Nested Dictionary, যার মধ্যে আবার index 1 এবং ২ তে দুইটি dictionary add করা হয়েছে।
Nested Dictionary এর Element গুলোতে Access
Nested Dictionary এর Element গুলোতে Access করতে হলে আপনাকে [ ] ব্যবহার করতে হবে, চলুন নিচে উদাহরণ দিয়ে বুঝে নেয়া যাক:
people = {1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Nahida', 'age': '22', 'sex': 'Female'}} print(people[1]['name']) print(people[1]['age']) print(people[1]['sex'])
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
Borhan 27 Male
Nested Dictionary তে Element Add অথবা update করা :
Nested Dictionary তে Element Add অথবা update করতে হলে আপনাকে প্রথমে একটা নতুন Dictionary তৈরী করে নিতে হবে, তারপর সেখানে নতুন Element Add করতে পারবেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}} people[3] = {} people[3]['name'] = 'Farhana' people[3]['age'] = '24' people[3]['sex'] = 'Female' people[3]['married'] = 'No' print(people[3])
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
{'name': 'Farhana', 'age': '24', 'sex': 'Female', 'married': 'No'}
তবে নিচের উদাহরণের মতো করেও Nested Dictionary তে Element Add অথবা update করতে পারবেন :
people = {1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Moumita', 'age': '22', 'sex': 'Female'}, 3: {'name': 'Farhana', 'age': '24', 'sex': 'Female', 'married': 'No'}} people[4] = {'name': 'Polash', 'age': '29', 'sex': 'Male', 'married': 'Yes'} print(people[4])
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
{'name': 'Peter', 'age': '29', 'sex': 'Male', 'married': 'Yes'}
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
Nested Dictionary থেকে Element Delete করা
Nested Dictionary থেকে Element Delete করতে হলে আপনাকে del keyword টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
people = {1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Farhana', 'age': '22', 'sex': 'Female'}, 3: {'name': 'Moumita', 'age': '24', 'sex': 'Female', 'married': 'No'}, 4: {'name': 'Polash', 'age': '29', 'sex': 'Male', 'married': 'Yes'}} del people[3]['married'] del people[4]['married'] print(people[3]) print(people[4])
{'name': 'Moumita', 'age': '24', 'sex': 'Female'} {'name': 'Polash', 'age': '29', 'sex': 'Male'}
আবার আপনি চাইলে পুরো Dictionary ই Delete করে দিতে পারেন । চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
people = {1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Farhana', 'age': '22', 'sex': 'Female'}, 3: {'name': 'Moumita', 'age': '24', 'sex': 'Female'}, 4: {'name': 'Peter', 'age': '29', 'sex': 'Male'}} del people[3], people[4] print(people)
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
{1: {'name': 'Borhan', 'age': '27', 'sex': 'Male'}, 2: {'name': 'Farhana', 'age': '22', 'sex': 'Female'}}
Nested Dictionary এর মধ্যে Iterate
for loop ব্যবহার করে আপনি Nested Dictionary এর প্রত্যেকটি Element এ iterate করতে পারেন। নিচের উদাহরণ দেখুন :
people = {1: {'Name': 'Jahir', 'Age': '27', 'Sex': 'Male'}, 2: {'Name': 'Moumita', 'Age': '22', 'Sex': 'Female'}} for p_id, p_info in people.items(): print("\nPerson ID:", p_id) for key in p_info: print(key + ':', p_info[key])
উপরের কোডটি run করলে নিচের মতো ফলাফল দেখাবে :
Person ID: 1 Name: Jahir Age: 27 Sex: Male Person ID: 2 Name: Moumita Age: 22 Sex: Female