ভূমিকা
একটি টাপল তালিকায় (list of tuples) প্রতিটি ইউনিক টাপল কতবার এসেছে তা গুনতে collections.defaultdict বা Counter ব্যবহার করা যায়। এই নিবন্ধে একটি লিস্ট-অফ-লিস্ট-অফ-টাপল স্ট্রাকচার দেখানো হয়েছে যেখানে প্রতিটি ইনার লিস্টে একটু টাপল আছে।
উদাহরণ কোড
import collections
my_result = collections.defaultdict(int)
my_list = [[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
print("The list of list is :")
print(my_list)
for elem in my_list:
my_result[elem[0]] += 1 # elem[0] হলো ইনার লিস্টের প্রথম (এবং একমাত্র) টাপল
print("The result is :")
print(my_result)
আউটপুট
The list of list is : [[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
The result is : defaultdict(, {('Hello', 'Hey'): 2, ('Jane', 'Will'): 1, ('William', 'John'): 1, ('z', 'q'): 1})
ব্যাখ্যা
collections.defaultdict(int)একটি ডিকশনারি যা মিসিং কী için ডিফল্ট ভ্যালু ০ রিটার্ন করে।my_listহলো লিস্ট-অফ-লিস্ট, যেখানে প্রতিটি উপ-লিস্টে একটু টাপল আছে।লুপে
elem[0]দিয়ে টাপলটি এক্সেস করা হয়েছে এবং তার কাউন্ট বাড়ানো হয়েছে।ফলাফলে
('Hello', 'Hey')২ বার, বাকিগুলো ১ বার এসেছে।
উন্নত এবং সহজ পদ্ধতি: Counter ব্যবহার
from collections import Counter
# লিস্ট ফ্ল্যাটেন করা (ইনার লিস্ট থেকে টাপল বের করা)
flat_tuples = [elem[0] for elem in my_list]
counts = Counter(flat_tuples)
print(counts)
# Counter({('Hello', 'Hey'): 2, ('Jane', 'Will'): 1, ('William', 'John'): 1, ('z', 'q'): 1})
Counter আরও পাইথনিক এবং সংক্ষিপ্ত।