ডিকশনারির একটি লিস্টকে প্রতিটি ডিকশনারির আইটেম সংখ্যা (লেন্থ) অনুযায়ী সাজানোর জন্য len() ফাংশন কি হিসেবে ব্যবহার করা হয়।
উদাহরণ
def dict_size(d):
"""ডিকশনারির আইটেম সংখ্যা ফেরত দেয়"""
return len(d)
my_list = [
{24: 56, 29: 11, 10: 22, 42: 28}, # ৪ আইটেম
{54: 73, 59: 11}, # ২ আইটেম
{13: 39}, # ১ আইটেম
{31: 22, 59: 73, 57: 44} # ৩ আইটেম
]
print("মূল লিস্ট:")
for d in my_list:
print(f" {d} → সাইজ: {len(d)}")
# সাইজ অনুযায়ী আরোহী ক্রমে সর্ট
my_list.sort(key=dict_size)
print("\nসাইজ অনুযায়ী সাজানো লিস্ট:")
for d in my_list:
print(" ", d)
আউটপুট
মূল লিস্ট:
{24: 56, 29: 11, 10: 22, 42: 28} → সাইজ: 4
{54: 73, 59: 11} → সাইজ: 2
{13: 39} → সাইজ: 1
{31: 22, 59: 73, 57: 44} → সাইজ: 3
সাইজ অনুযায়ী সাজানো লিস্ট:
{13: 39}
{54: 73, 59: 11}
{31: 22, 59: 73, 57: 44}
{24: 56, 29: 11, 10: 22, 42: 28}
ল্যাম্বডা দিয়ে এক লাইনে
my_list.sort(key=len) # len() সরাসরি ডিকশনারিতে কাজ করে
# অথবা
my_list.sort(key=lambda d: len(d))
ডিসেন্ডিং ক্রম (বড় থেকে ছোট)
my_list.sort(key=len, reverse=True)
সাইজ এবং কনটেন্ট দুটির কম্বিনেশন
# প্রথমে সাইজ, তারপর কি অনুযায়ী (টাই ব্রেক)
my_list.sort(key=lambda d: (len(d), sorted(d.keys())))
Pandas-এ প্রয়োগ
import pandas as pd
df = pd.DataFrame(my_list)
df['size'] = df.notna().sum(axis=1)
df_sorted = df.sort_values('size').drop('size', axis=1)