দুটি ডিকশনারির ভ্যালু লিস্টের মধ্যে ক্রস ম্যাপিং (cross mapping) করার জন্য setdefault() এবং extend() মেথড ব্যবহার করা হয়। প্রথম ডিকশনারির ভ্যালুগুলোকে কি হিসেবে এবং দ্বিতীয় ডিকশনারির সংশ্লিষ্ট ভ্যালুগুলোকে ভ্যালু হিসেবে ব্যবহার করা হয়।
উদাহরণ
dict1 = {"Python": [4, 7], "Fun": [8, 6]}
dict2 = {6: [5, 7], 8: [3, 6], 7: [9, 8]}
print("ডিকশনারি ১:", dict1)
print("ডিকশনারি ২:", dict2)
# ক্রস ম্যাপিং
result = {}
for key, values in dict1.items():
for val in values:
# dict2-এ val কি হিসেবে থাকলে সেটির ভ্যালুগুলো অ্যাপেন্ড
result.setdefault(key, []).extend(dict2.get(val, []))
print("ফলাফল:", result)
আউটপুট
ডিকশনারি ১: {'Python': [4, 7], 'Fun': [8, 6]}
ডিকশনারি ২: {6: [5, 7], 8: [3, 6], 7: [9, 8]}
ফলাফল: {'Python': [9, 8], 'Fun': [3, 6, 5, 7]}
ব্যাখ্যা
- Python → [4, 7]:
- 4 → dict2-এ নেই → কিছুই যোগ হয় না
- 7 → dict2[7] = [9, 8] → যোগ হয়
- ফলাফল: Python → [9, 8]
- Fun → [8, 6]:
- 8 → dict2[8] = [3, 6] → যোগ হয়
- 6 → dict2[6] = [5, 7] → যোগ হয়
- ফলাফল: Fun → [3, 6, 5, 7]
ডিকশনারি কম্প্রিহেনশন দিয়ে সংক্ষিপ্ত সংস্করণ
result = {
k: [v2 for v1 in vals for v2 in dict2.get(v1, [])]
for k, vals in dict1.items()
}
এটি একই ফলাফল দেবে কিন্তু আরও সংক্ষিপ্ত এবং পাইথনিক।