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

Tổng nhóm của danh sách tuple trong Python


Trong hướng dẫn này, ta viết chương trình cộng tất cả giá trị với cùng key từ các list khác nhau. Xem ví dụ để hiểu rõ.

Đầu vào

list_one = [('a', 2), ('b', 3), ('c', 5)]
list_two = [('c', 7), ('a', 4), ('b', 2)]

Đầu ra

[('a', 6), ('b', 5), ('c', 12)]

Làm theo các bước sau để giải quyết.

  • Khởi tạo các list.
  • Chuyển list đầu thành dictionary dùng dict lưu vào biến.
  • Lặp qua list thứ hai và cộng giá trị tương ứng vào key có trong dictionary.
  • In kết quả.

Ví dụ

# Khởi tạo list
list_one = [('a', 2), ('b', 3), ('c', 5)]
list_two = [('c', 7), ('a', 4), ('b', 2)]
# Chuyển list_one thành dict
result = dict(list_one)
# Lặp qua list thứ hai
for tup in list_two:
    # Kiểm tra key trong dict
    if tup[0] in result:
        result[tup[0]] = result.get(tup[0]) + tup[1]
        # In kết quả dạng list tuple
print(list(result.items()))

Kết quả

Nếu chạy mã trên, bạn sẽ nhận được kết quả sau.

[('a', 6), ('b', 5), ('c', 12)]

Ta giải quyết vấn đề trên không lặp qua list nào dùng Counter từ collections. Xem nó.

Ví dụ

# Import Counter từ collections
from collections import Counter
# Khởi tạo list
list_one = [('a', 2), ('b', 3), ('c', 5)]
list_two = [('c', 7), ('a', 4), ('b', 2)]
# Lấy kết quả
result = Counter(dict(list_one)) + Counter(dict(list_two))
# In kết quả dạng list tuple
print(list(result.items()))

Kết quả

Nếu chạy mã trên, bạn sẽ nhận được kết quả sau.

[('a', 6), ('b', 5), ('c', 12)]

Kết luận

Nếu có thắc mắc về hướng dẫn, hãy đề cập ở phần bình luận.