Đếm số lượng key duy nhất (phần tử đầu tuple) tương ứng với mỗi giá trị (phần tử thứ hai) trong danh sách tuple. Sử dụng defaultdict, set và append().
Mã nguồn
from collections import defaultdict
my_list = [(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
print("Danh sách tuple:", my_list)
# Bước 1: Gom nhóm key theo value
my_result = defaultdict(list)
for element in my_list:
my_result[element[1]].append(element[0])
# Bước 2: Đếm key duy nhất cho mỗi value
result_dictionary = {}
for key in my_result:
result_dictionary[key] = len(set(my_result[key]))
print("Kết quả (value: số key duy nhất):", result_dictionary)
Kết quả
Danh sách tuple: [(12, 32), (12, 21), (21, 32), (89, 21), (71, 21), (89, 11), (99, 10), (8, 23), (10, 23)]
Kết quả (value: số key duy nhất): {32: 2, 21: 3, 11: 1, 10: 1, 23: 2}
Giải thích
defaultdict(list)tự động tạo list rỗng cho key mới.- Duyệt tuple:
element[1]là value (key của dict),element[0]là key (value của dict). - Sau vòng lặp:
{32: [12, 21], 21: [12, 89, 71], 11: [89], 10: [99], 23: [8, 10]}. set(my_result[key])loại bỏ key trùng lặp,len()đếm số lượng duy nhất.
Cách ngắn gọn
from collections import Counter
# Đếm cặp (value, key) duy nhất
unique_pairs = set(my_list)
result = Counter(v for k, v in unique_pairs)
print(dict(result))