ডিকশনারি কম্প্রিহেনশন্স

লিস্ট কম্প্রিহেনশনের মত একইভাবে ডিকশনারি কম্প্রিহেনশন ও ব্যবহার করা যায়। এটি পাইথন ৩ তে নতুন সংযোজন করা হয় এবং পরে পাইথন২ তে ও সংযোজন করা হয়। এর গঠনও লিস্ট কম্প্রিহেনশনের মতই । লিস্টের ক্ষেত্রে আমরা এক্সপ্রেশনের জায়গায় শুধুমাত্র ভ্যালু নিয়ে কাজ করেছি এখন আমাদের কি-ভ্যালু নিয়ে কাজ করতে হবে।

>>> dictionary = {'1':'a','2':'b','3':'c'}
>>> dictionary.keys()
dict_keys(['1', '2', '3'])
>>> dictionary.values()
dict_values(['a', 'b', 'c'])
>>> dictionary.items()
dict_items([('1', 'a'), ('2', 'b'), ('3', 'c')])  

>>> sqaure_of_values = { key : value*2 for (key, value) in dictionary.items()}
>>> sqaure_of_values
{'1': 'aa', '2': 'bb', '3': 'cc'}

‘কী’র মান পরিবর্তন করা এবং লিস্ট কম্প্রিহেনশনের মত if স্টেট্মেন্ট ব্যবহার করার চেষ্টা কর। এখন আমরা দুটো লিস্ট থেকে কম্প্রিহেনশনের মাধ্যমে ডিকশনারি তৈরি করা দেখবঃ

>>> a = [1,2,3,4,5]
>>> b = ['a','b','c','d','e']
>>> dictionary = {key : value for key,value in zip(a,b)}
>>> dictionary
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

এখানে a লিস্টের এলিমেন্টকে key এবং b লিস্টের এলিমেন্ট কে ভ্যলু হিসেবে নেয়া হয়েছে। এবং কি-ভ্যালুকে zip() ফাংশনে পাঠানো হয়েছে। zip() ফাংশন প্রতিবার একটি ইটারেবল অবজেক্ট রিটার্ন করে যা ডিকশনারি তে কনভার্ট হচ্ছে। যদিও এখানে এটি আমাদের আলোচনার বিষইয় না তারপর ও জেনে রাখা ভাল যে, zip() ফাংশন সবসময় নুন্যতম সংখ্যক এলিমেন্ট নিয়ে কাজ করে। অর্থ্যাৎ,যেকোন লিস্টের মধ্যে সবচেয়ে কমসংখ্যক এলিমেন্ট যে লিস্টে থাকবে zip() শুধু ততবার ই ইটারেশন চালাবে।

>>>numberList = [1, 2, 3]
>>> strList = [‘one’, ‘two’, ‘three’,’four’]
>>> dict(zip(numberList,strList))
{1: ‘one’, 2: ‘two’, 3: ‘three’}
>>> strList = [‘one’, ‘two’]
>>> dict(zip(numberList,strList))
{1: ‘one’, 2: ‘two’}

zip() ফাংশনে দুইয়ের অধিক ইটারেবল অবজেক্ট ও পাঠানো যায় এবং unzip ও করা যায়।

Last updated