Thực hiện ghép cặp chéo giữa hai danh sách tuple dựa trên phần tử đầu tiên trùng khớp. Sử dụng zip(), list comprehension và so sánh ==.
Mã nguồn
my_list_1 = [('Hi', 'Will'), ('Jack', 'Python'), ('Bill', 'Mills'), ('goodwill', 'Jill')]
my_list_2 = [('Hi', 'Band'), ('Jack', 'width'), ('Bill', 'cool'), ('a', 'b')]
print("Danh sách 1:", my_list_1)
print("Danh sách 2:", my_list_2)
my_list_1.sort()
my_list_2.sort()
print("Danh sách 1 sau sắp xếp:", my_list_1)
print("Danh sách 2 sau sắp xếp:", my_list_2)
# Ghép cặp chéo: nếu phần tử đầu trùng nhau -> lấy cặp phần tử thứ hai
my_result = [(a[1], b[1]) for a, b in zip(my_list_1, my_list_2) if a[0] == b[0]]
print("Kết quả ghép cặp chéo:", my_result)
Kết quả
Danh sách 1: [('Hi', 'Will'), ('Jack', 'Python'), ('Bill', 'Mills'), ('goodwill', 'Jill')]
Danh sách 2: [('Hi', 'Band'), ('Jack', 'width'), ('Bill', 'cool'), ('a', 'b')]
Danh sách 1 sau sắp xếp: [('Bill', 'Mills'), ('Hi', 'Will'), ('Jack', 'Python'), ('goodwill', 'Jill')]
Danh sách 2 sau sắp xếp: [('Bill', 'cool'), ('Hi', 'Band'), ('Jack', 'width'), ('a', 'b')]
Kết quả ghép cặp chéo: [('Mills', 'cool'), ('Will', 'Band'), ('Python', 'width')]
Giải thích
- Hai danh sách được sắp xếp theo phần tử đầu của tuple.
zip(my_list_1, my_list_2)ghép cặp phần tử cùng vị trí sau sắp xếp.- Điều kiện
a[0] == b[0]kiểm tra key (phần tử đầu) trùng khớp. - Nếu khớp, tạo tuple mới từ phần tử thứ hai:
(a[1], b[1]). - Tuple ('goodwill', 'Jill') và ('a', 'b') không khớp key -> bị loại.
Kỹ thuật này giống như INNER JOIN trên key đầu tiên của tuple.