NamedTuple collections মডিউলের অধীনে আরেকটি ক্লাস। ডিকশনারি টাইপ অবজেক্টের মতো, এতে কী রয়েছে যা কিছু মানের সাথে ম্যাপ করা থাকে। এই কেসে আমরা ইনডেক্স এবং কী দুভায়েই এলিমেন্ট অ্যাক্সেস করতে পারি।
এটি ব্যবহার করতে হলে প্রথমে collections স্ট্যান্ডার্ড লাইব্রেরি মডিউলটি ইম্পোর্ট করতে হবে।
import collections
এই বিভাগে আমরা NamedTuple ক্লাসের কিছু ফাংশন দেখব।
NamedTuple-এ অ্যাক্সেস করার পদ্ধতিসমূহ
NamedTuple- থেকে আমরা ইনডেক্স, কী এবং getattr() মেথড ব্যবহার করে মান অ্যাক্সেস করতে পারি। NamedTuple-এর অ্যাট্রিবিউট মানগুলো অর্ডার্ড। তাই আমরা ইনডেক্স ব্যবহার করে সেগুলো অ্যাক্সেস করতে পারি।
NamedTuple ফিল্ড নামগুলোকে অ্যাট্রিবিউট হিসেবে কনভার্ট করে। তাই getattr() ব্যবহার করে সেই অ্যাট্রিবিউট থেকে ডেটা পাওয়া সম্ভব।
উদাহরণ কোড
import collections as col
# Employee NamedTuple তৈরি
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
# দুটি কর্মচারী যোগ
e1 = Employee('Asim', 'Delhi', '25000')
e2 = Employee('Bibhas', 'Kolkata', '30000')
# ইনডেক্স ব্যবহার করে এলিমেন্ট অ্যাক্সেস
print('The name and salary of e1: ' + e1[0] + ' and ' + e1[2])
# অ্যাট্রিবিউট নাম ব্যবহার করে এলিমেন্ট অ্যাক্সেস
print('The name and salary of e2: ' + e2.name + ' and ' + e2.salary)
# getattr() ব্যবহার করে এলিমেন্ট অ্যাক্সেস
print('The City of e1 and e2: ' + getattr(e1, 'city') + ' and ' + getattr(e2, 'city'))
আউটপুট
The name and salary of e1: Asim and 25000 The name and salary of e2: Bibhas and 30000 The City of e1 and e2: Delhi and Kolkata
NamedTuple কনভারশন প্রসিডিউর
অন্য কলেকশনকে NamedTuple-এ কনভার্ট করার কিছু মেথড রয়েছে। _make() মেথড একটি ইতেরেবল অবজেক্ট যেমন লিস্ট, টাপল ইত্যাদিকে NamedTuple অবজেক্টে কনভার্ট করতে ব্যবহার করা যায়।
আমরা একটি ডিকশনারি টাইপ অবজেক্টকেও NamedTuple অবজেক্টে কনভার্ট করতে পারি। এই কনভারশনের জন্য ** অপারেটর প্রয়োজন।
NamedTuple কীসহ মানগুলো OrderedDict টাইপ অবজেক্ট হিসেবে ফেরত দিতে পারে। OrderedDict বানাতে হলে _asdict() মেথড ব্যবহার করতে হবে।
উদাহরণ কোড
import collections as col
# Employee NamedTuple তৈরি
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
# Employee-র জন্য মানগুলোর লিস্ট
my_list = ['Asim', 'Delhi', '25000']
e1 = Employee._make(my_list)
print(e1)
# Employee-এ কনভার্ট করার জন্য ডিকশনারি
my_dict = {'name':'Bibhas', 'city' : 'Kolkata', 'salary' : '30000'}
e2 = Employee(**my_dict)
print(e2)
# নেমড টাপলকে ডিকশনারি হিসেবে দেখান
emp_dict = e1._asdict()
print(emp_dict)
আউটপুট
Employee(name='Asim', city='Delhi', salary='25000')
Employee(name='Bibhas', city='Kolkata', salary='30000')
OrderedDict([('name', 'Asim'), ('city', 'Delhi'), ('salary', '25000')])
NamedTuple-এ কিছু অতিরিক্ত অপারেশন
_fields() এবং _replace() وبعض অন্যান্য মেথড রয়েছে। _fields() মেথড ব্যবহার করে আমরা চেক করতে পারি NamedTuple-এর বিভিন্ন ফিল্ড কী কী। _replace() মেথড কিছু মান অন্য মান দিয়ে রিপ্লেস করতে ব্যবহৃত হয়।
উদাহরণ কোড
import collections as col
# Employee NamedTuple তৈরি
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
# একটি কর্মচারী যোগ
e1 = Employee('Asim', 'Delhi', '25000')
print(e1)
print('The fields of Employee: ' + str(e1._fields))
# কর্মচারীর সিটি রিপ্লেস
e1 = e1._replace(city='Mumbai')
print(e1)
আউটপুট
Employee(name='Asim', city='Delhi', salary='25000')
The fields of Employee: ('name', 'city', 'salary')
Employee(name='Asim', city='Mumbai', salary='25000')