Gộp các hàng của ma trận có cùng phần tử đầu tiên (key). Sử dụng setdefault() và list comprehension.
Mã nguồn
my_list = [[41, "python"], [13, "pyt"], [41, "is"], [4, "always"], [3, "fun"]]
print("Ma trận gốc:", my_list)
my_result = {}
for key, value in my_list:
my_result.setdefault(key, []).append(value)
# Chuyển dict về list: [key, value1, value2, ...]
my_result = [[key] + value for key, value in my_result.items()]
print("Ma trận sau gộp:", my_result)
Kết quả
Ma trận gốc: [[41, 'python'], [13, 'pyt'], [41, 'is'], [4, 'always'], [3, 'fun']] Ma trận sau gộp: [[41, 'python', 'is'], [13, 'pyt'], [4, 'always'], [3, 'fun']]
Giải thích
- Duyệt từng hàng: unpack thành
key, value(giả sử mỗi hàng 2 phần tử). my_result.setdefault(key, [])tạo list rỗng cho key mới..append(value)gom value theo key.- Kết quả dict:
{41: ['python', 'is'], 13: ['pyt'], 4: ['always'], 3: ['fun']}. - List comprehension
[[key] + value ...]chuyển về dạng ma trận.
Ứng dụng
Gom nhóm dữ liệu theo key (group by key) dạng ma trận, tương tự GROUP_CONCAT trong SQL.