একটি লিস্টে সেট অবজেক্ট থাকলে, ডুপ্লিকেট সেটগুলো (অর্ডার নির্বিশেষে সমান সেট) খুঁজে বের করতে Counter এবং frozenset ব্যবহার করা হয়। সেট মিউটেবল হয়ে হ্যাশেবল নয়, তাই frozenset ব্যবহার করা হয়।
উদাহরণ
from collections import Counter
my_list = [{4, 8, 6, 1}, {6, 4, 1, 8}, {1, 2, 6, 2}, {1, 4, 2}, {7, 8, 9}]
print("The list is :")
print(my_list)
my_freq = Counter(frozenset(sub) for sub in my_list)
my_result = []
for key, value in my_freq.items():
if value > 1:
my_result.append(key)
print("The result is :")
print(my_result)
আউটপুট
The list is : [{8, 1, 4, 6}, {8, 1, 4, 6}, {1, 2, 6}, {1, 2, 4}, {8, 9, 7}]
The result is : [frozenset({8, 1, 4, 6})]
ব্যাখ্যা
- সেটের লিস্ট ডিফাইন এবং ডিসপ্লে করা হয় (প্রিন্টে অর্ডার বদলতে পারে)।
- প্রতিটি সাব-সেটকে
frozensetএ কনভার্ট করেCounterদিয়ে ফ্রিকোয়েন্সি কাউন্ট করা হয়। - ফ্রিকোয়েন্সি > 1 হলে সেটটি ডুপ্লিকেট।
- ডুপ্লিকেট সেটগুলো রেজাল্ট লিস্টে অ্যাপেন্ড করা হয়।
- ফলাফল:
{8, 1, 4, 6}দুবার এসেছে।
নোট: frozenset ইমিউটেবল এবং হ্যাশেবল, তাই ডিকশনারি কী বা Counter-এ ব্যবহার করা যায়।