টাপল লিস্টে প্রতিটি দ্বিতীয় এলিমেন্ট (ভ্যালু) এর সাথে যুক্ত কতগুলো ইউনিক প্রথম এলিমেন্ট (কি) আছে তা গণনা করার জন্য defaultdict, set এবং append ব্যবহার করা হয়।
উদাহরণ
from collections import defaultdict
my_list = [
(12, 32), (12, 21), (21, 32), (89, 21),
(71, 21), (89, 11), (99, 10), (8, 23), (10, 23)
]
print("টাপল লিস্ট:", my_list)
# ভ্যালু -> কিসের লিস্ট ম্যাপ
val_to_keys = defaultdict(list)
for key, val in my_list:
val_to_keys[val].append(key)
# ইউনিক কি কাউন্ট
result = {val: len(set(keys)) for val, keys in val_to_keys.items()}
print("ভ্যালু -> ইউনিক কি কাউন্ট:")
print(result)
আউটপুট
টাপল লিস্ট: [(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
ভ্যালু -> ইউনিক কি কাউন্ট:
{32: 2, 21: 3, 11: 1, 10: 1, 23: 2}
ব্যাখ্যা
- 32 → কি: 12, 21 → ইউনিক: ২টি
- 21 → কি: 12, 89, 71 → ইউনিক: ৩টি
- 11 → কি: 89 → ১টি
- 10 → কি: 99 → ১টি
- 23 → কি: 8, 10 → ২টি
সংক্ষিপ্ত সংস্করণ (Counter + setdefault)
from collections import defaultdict
val_to_keys = defaultdict(set) # সেট দিয়ে সরাসরি ইউনিক রাখা
for k, v in my_list:
val_to_keys[v].add(k)
result = {v: len(keys) for v, keys in val_to_keys.items()}
defaultdict(set) ব্যবহার করলে append এর বদলে add এবং بعدে set() কনভারশন লাগে না।