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

পাইথনে ডিকশনারির লিস্টকে ভ্যালু অনুযায়ী সর্ট করা


সমস্যা

ডিকশনারির একটি লিস্ট দেওয়া আছে, প্রতিটিতে name এবং roll কী আছে। এই লিস্টকে ভিন্ন ভিন্ন ভ্যালু অনুযায়ী সর্ট করতে হবে।

উদাহরণ ডেটা


my_list = [
    {"name": "Adwaita", "roll": 100},
    {"name": "Aadrika", "roll": 234},
    {"name": "Sakya", "roll": 23}
]

সর্টিং পদ্ধতিগুলো

১. Roll অনুযায়ী Ascending


sorted_by_roll = sorted(my_list, key=lambda x: x['roll'])
print(sorted_by_roll)
# [{'name': 'Sakya', 'roll': 23}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Aadrika', 'roll': 234}]

২. Roll তারপর Name অনুযায়ী (টাই ব্রেকার)


sorted_by_roll_name = sorted(my_list, key=lambda x: (x['roll'], x['name']))
print(sorted_by_roll_name)
# একই আউটপুট (রোল ইউনিক হলে)

৩. Roll অনুযায়ী Descending


sorted_desc = sorted(my_list, key=lambda x: x['roll'], reverse=True)
print(sorted_desc)
# [{'name': 'Aadrika', 'roll': 234}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Sakya', 'roll': 23}]

৪. Name অনুযায়ী সর্ট


sorted_by_name = sorted(my_list, key=lambda x: x['name'])
print(sorted_by_name)
# [{'name': 'Aadrika', 'roll': 234}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Sakya', 'roll': 23}]

৫. operator.itemgetter ব্যবহার (দ্রুততর)


from operator import itemgetter

sorted_roll = sorted(my_list, key=itemgetter('roll'))
sorted_roll_name = sorted(my_list, key=itemgetter('roll', 'name'))
sorted_name = sorted(my_list, key=itemgetter('name'))

inplace সর্ট (লিস্ট পরিবর্তন)


my_list.sort(key=lambda x: x['roll'])  # নতুন লিস্ট না বানিয়ে সেম লিস্ট সর্ট

নেস্টেড ডিকশনারি/কমপ্লেক্স কী


# যদি ডিকশনারি নেস্টেড হয়
data = [{"info": {"age": 25, "score": 90}}, {"info": {"age": 20, "score": 95}}]
sorted_data = sorted(data, key=lambda x: x['info']['score'], reverse=True)
  1. পাইথনে ডিকশনারির লিস্ট ভ্যালু অনুযায়ী সোর্ট করার পদ্ধতিসমূহ

  2. পাইথনে এলিমেন্টের দৈর্ঘ্য অনুযায়ী লিস্ট সর্ট করা

  3. পাইথনে দুটি ডিকশনারি মার্জ করার প্রোগ্রাম

  4. পাইথনে ডিকশনারির ভ্যালু অনুযায়ী লিস্ট অফ ডিকশনারি সর্ট কীভাবে করবেন?