কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম: নির্দিষ্ট মান না থাকলে ডিকশনারির লিস্ট থেকে ডিকশনারি সরানো

ডিকশনারির একটি লিস্ট থেকে নির্দিষ্ট মান যুক্ত ডিকশনারি সরানোর জন্য ইটারেশন, del অপারেটর এবং break স্টেটমেন্ট ব্যবহার করা হয়।

উদাহরণ

my_list = [
    {"code": 1, "fun": "learn"},
    {"code": 2, "fun": "code"},
    {"code": 3, "fun": "test"},
    {"code": 4, "fun": "teach"},
    {"code": 4, "fun": "make"},
    {"code": 4, "fun": "object"}
]

print("মূল লিস্ট:")
print(my_list)

# code == 3 হলে সেটি মুছে ফেলা
for i in range(len(my_list)):
    if my_list[i]['code'] == 3:
        del my_list[i]
        break  # প্রথম মিল পাওয়ার পর লুপ থেকে বের হওয়া

print("\nআপডেটেড লিস্ট:")
print(my_list)

আউটপুট

মূল লিস্ট:
[{'code': 1, 'fun': 'learn'}, {'code': 2, 'fun': 'code'}, {'code': 3, 'fun': 'test'}, {'code': 4, 'fun': 'teach'}, {'code': 4, 'fun': 'make'}, {'code': 4, 'fun': 'object'}]

আপডেটেড লিস্ট:
[{'code': 1, 'fun': 'learn'}, {'code': 2, 'fun': 'code'}, {'code': 4, 'fun': 'teach'}, {'code': 4, 'fun': 'make'}, {'code': 4, 'fun': 'object'}]

উন্নত ও পাইথনিক পদ্ধতি

লিস্ট কম্প্রিহেনশন বা filter() ব্যবহার করা ভালো, কারণ লিস্ট ইটারেট করার সময় ডিলিট করলে ইন্ডেক্স সমস্যা হয়:

# লিস্ট কম্প্রিহেনশন (সুপারিশকৃত)
filtered = [d for d in my_list if d['code'] != 3]

# অথবা filter()
filtered = list(filter(lambda d: d['code'] != 3, my_list))

# একাধিক শর্তের জন্য
filtered = [d for d in my_list if not (d['code'] == 3 and d['fun'] == 'test')]

কেন মূল পদ্ধতিটি সমস্যা?

  • for i in range(len(my_list)) দিয়ে ইটারেট করে del করলে পরবর্তী ইন্ডেক্সগুলো শিফট করে
  • break দিয়ে শুধু প্রথম মিলটি মুছে দেয় — সব মাচ করা আইটেম মুছে দিতে চাইলে এটি কাজ করবে না
  • লিস্ট কম্প্রিহেনশন নতুন লিস্ট তৈরি করে, মূল লিস্ট অপরিবর্তিত রাখে (ফাংশনাল স্টাইল)
  1. পাইথনে BST-এ একটি মান আছে কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে ডিকশনারি থেকে ভ্যালু দিয়ে কী বের করা (Get key from value)

  3. পাইথন - ডিকশনারির মান হিসেবে তালিকা খালি করা

  4. পাইথনে লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো