নেস্টেড লিস্ট (ম্যাট্রিক্স) কে প্রথম এলিমেন্ট (কি) অনুযায়ী গ্রুপ করে, একই কির সারিগুলোকে একসাথে মার্জ করার জন্য setdefault() এবং লিস্ট কম্প্রিহেনশন ব্যবহার করা হয়।
উদাহরণ
my_list = [[41, "python"], [13, "pyt"], [41, "is"], [4, "always"], [3, "fun"]]
print("মূল ম্যাট্রিক্স:")
for row in my_list:
print(" ", row)
# ডিকশনারি দিয়ে গ্রুপিং
merged_dict = {}
for key, value in my_list:
merged_dict.setdefault(key, []).append(value)
# ডিকশনারি থেকে আবার লিস্টে: [key, val1, val2, ...]
result = [[key] + values for key, values in merged_dict.items()]
print("\nমার্জ করা ম্যাট্রিক্স:")
for row in result:
print(" ", row)
আউটপুট
মূল ম্যাট্রিক্স:
[41, 'python']
[13, 'pyt']
[41, 'is']
[4, 'always']
[3, 'fun']
মার্জ করা ম্যাট্রিক্স:
[41, 'python', 'is']
[13, 'pyt']
[4, 'always']
[3, 'fun']
ব্যাখ্যা
setdefault(key, [])— কি না থাকলে খালি লিস্ট তৈরি করে.append(value)— ভ্যালু যোগ করে[[key] + values ...]— কি এবং ভ্যালু লিস্ট একসাথে নতুন সারি বানায়
collections.defaultdict(list) ব্যবহার
from collections import defaultdict
merged = defaultdict(list)
for key, val in my_list:
merged[key].append(val)
result = [[k] + v for k, v in merged.items()]
Pandas-এ groupby + agg(list)
import pandas as pd
df = pd.DataFrame(my_list, columns=['key', 'value'])
result = df.groupby('key')['value'].apply(list).reset_index()
# result.values.tolist() দিয়ে লিস্টে রূপান্তর
সর্টেড আউটপুট
result = sorted([[k] + v for k, v in merged_dict.items()], key=lambda x: x[0])
# কি অনুযায়ী সর্টেড: [[3, 'fun'], [4, 'always'], [13, 'pyt'], [41, 'python', 'is']]