দুটি টাপল লিস্টের মধ্যে প্রথম এলিমেন্ট মিলে যাওয়া জোড়াগুলোর দ্বিতীয় এলিমেন্ট দিয়ে নতুন টাপল বানানোর জন্য zip(), লিস্ট কম্প্রিহেনশন এবং সমতা চেক ব্যবহার করা হয়।
উদাহরণ
list1 = [('Hi', 'Will'), ('Jack', 'Python'), ('Bill', 'Mills'), ('goodwill', 'Jill')]
list2 = [('Hi', 'Band'), ('Jack', 'width'), ('Bill', 'cool'), ('a', 'b')]
print("লিস্ট ১:", list1)
print("লিস্ট ২:", list2)
# সর্ট (ঐচ্ছিক)
list1.sort()
list2.sort()
print("সর্টেড লিস্ট ১:", list1)
print("সর্টেড লিস্ট ২:", list2)
# zip দিয়ে জোড়া বানানো, প্রথম এলিমেন্ট সমান হলে দ্বিতীয় এলিমেন্ট নেওয়া
result = [(a[1], b[1]) for a, b in zip(list1, list2) if a[0] == b[0]]
print("ফলাফল:", result)
আউটপুট
লিস্ট ১: [('Hi', 'Will'), ('Jack', 'Python'), ('Bill', 'Mills'), ('goodwill', 'Jill')]
লিস্ট ২: [('Hi', 'Band'), ('Jack', 'width'), ('Bill', 'cool'), ('a', 'b')]
সর্টেড লিস্ট ১: [('Bill', 'Mills'), ('Hi', 'Will'), ('Jack', 'Python'), ('goodwill', 'Jill')]
সর্টেড লিস্ট ২: [('Bill', 'cool'), ('Hi', 'Band'), ('Jack', 'width'), ('a', 'b')]
ফলাফল: [('Mills', 'cool'), ('Will', 'Band'), ('Python', 'width')]
ব্যাখ্যা
zip(list1, list2)— দুটি লিস্টের একই ইন্ডেক্সের টাপলগুলো জোড়া বানায়a[0] == b[0]— প্রথম এলিমেন্ট (কি) মিলে কিনা চেক করে(a[1], b[1])— মিললে দ্বিতীয় এলিমেন্ট (ভ্যালু) দিয়ে নতুন টাপল বানায়
দ্রষ্টব্য
এই পদ্ধতিটি ইন্ডেক্স-ভিত্তিক — অর্থাৎ সর্ট করার পর একই পজিশনে থাকা টাপলগুলো জোড়া মেলানো হয়। যদি কি-ভিত্তিক ম্যাপিং চান (ইন্ডেক্স নয়), তবে:
# ডিকশনারি বানিয়ে কি-ভিত্তিক লুকআপ
dict2 = {k: v for k, v in list2}
result = [(v, dict2[k]) for k, v in list1 if k in dict2]
# [('Mills', 'cool'), ('Will', 'Band'), ('Python', 'width')]
এটি ইন্ডেক্স পজিশন নির্বিশেষে কি মিলে যাওয়ায় কাজ করবে।