Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Ghép cặp chéo (Cross Pairing) trong danh sách tuple

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.