সমস্যা বিবরণ
ডিকশনারিতে কীগুলো ইউনিক হয় কিন্তু ভ্যালুগুলো ডুপ্লিকেট হতে পারে। ডুপ্লিকেট ভ্যালু वाले কীগুলো গ্রুপ করে বের করতে হবে।
পদ্ধতি ১: কী-ভ্যালু এক্সচেঞ্জ করে গ্রুপিং
নতুন ডিকশনারি বানান যেখানে ভ্যালু কী, এবং কীগুলো লিস্ট হিসেবে ভ্যালু।
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}
k_v_exchanged = {}
for key, value in dictA.items():
if value not in k_v_exchanged:
k_v_exchanged[value] = [key]
else:
k_v_exchanged[value].append(key)
print("New Dictionary:", k_v_exchanged) # {5: ['Sun', 'Tue'], 3: ['Mon', 'Wed']}
পদ্ধতি ২: set() এবং setdefault() ব্যবহার
setdefault দিয়ে সেটে কী যোগ করুন, পরে ফিল্টার করে যেগুলোর লেন্থ > ১।
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}
dictB = {}
for key, value in dictA.items():
dictB.setdefault(value, set()).add(key)
res = filter(lambda x: len(x) > 1, dictB.values())
print("Duplicate value keys:", list(res)) # [{'Tue', 'Sun'}]