ডিকশনারির মান হিসেবে লিস্ট রাখা একটি শক্তিশালী প্যাটার্ন, যা মাল্টি-ভ্যালু ম্যাপিং, গ্রুপিং বা অ্যাডজেসেন্সি লিস্ট রিপ্রেজেন্টেশনে কাজে লাগে। নিচে চারটি পদ্ধতি দেখানো হলো।
উদাহরণ
১. সরাসরি অ্যাসাইনমেন্ট
myDict = {}
myDict["key1"] = [1, 2]
myDict["key2"] = ["Vishesh", "For", "Python"]
print(myDict)
# {'key2': ['Vishesh', 'For', 'Python'], 'key1': [1, 2]}
২. এক্সিস্টিং লিস্টে অন্য লিস্ট নেস্ট করা (সাব-লিস্ট)
myDict = {}
myDict["key1"] = [1, 2]
lst = ['vishesh', 'For', 'python']
myDict["key1"].append(lst) # লিস্টের মধ্যে লিস্ট যোগ
print(myDict)
# {'key1': [1, 2, ['vishesh', 'For', 'python']]}
৩. setdefault() ব্যবহার করে গ্রুপিং (ব্যবহারিক প্যাটার্ন)
myDict = dict()
valList = ['1', '2', '3']
for val in valList:
for ele in range(int(val), int(val) + 2):
myDict.setdefault(ele, []).append(val)
print(myDict)
# {1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}
৪. ডিকশনারি কাম্প্রিহেনশন (সংক্ষিপ্ত)
d = dict((val, range(int(val), int(val) + 2)) for val in ['1', '2', '3'])
print(d)
# {'1': range(1, 3), '3': range(3, 5), '2': range(2, 4)}
সাধারণ ব্যবহার ক্ষেত্রে (Use Cases)
- গ্রুপিং:
defaultdict(list)ব্যবহার করে ক্যাটেগরি অনুযায়ী আইটেম গোষ্ঠী করা। - গ্রাফ/অ্যাডজেসেন্সি লিস্ট: নোড -> নেইবার লিস্ট।
- ইনভার্টেড ইনডেক্স: শব্দ -> ডকুমেন্ট আইডি লিস্ট।
সেরা অনুশীলন: defaultdict ব্যবহার করুন
from collections import defaultdict
# কী না থাকলে স্বয়ংক্রিয়ভাবে খালি লিস্ট তৈরি হয়
grouped = defaultdict(list)
for item in data:
grouped[item.category].append(item)
# সাধারণ ডিকশনারির মত ব্যবহার করা যায়
print(dict(grouped))
সুবিধা:
setdefault বা if key not in dict চেক করার প্রয়োজন নেই। কোড আরও ক্লিন এবং দ্রুত।