Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python: หาผลรวมของทูเพิลที่มีค่าแรกเท่ากัน

ทูเพิลเป็นคอลเลกชันหรืออาร์เรย์ของ Python ที่มีลำดับแต่ไม่สามารถเปลี่ยนแปลงได้ ถ้าเราได้ทูหลายตัวที่มีสมาชิกแรกเท่ากัน เราอาจมีสถานการณ์ที่ต้องบวกสมาชิกที่สองของทูเหล่านั้นที่มีสมาชิกแรกเท่ากัน

ใช้ Map และลูป For

ในวิธีนี้เราจะพิจารณาลิสต์ที่ประกอบด้วยทูเพิล แล้วแปลงเป็น dictionary เพื่อเชื่อมโยงสมาชิกในทูเพิลเป็นคู่ key-value แล้วใช้ลูป for บวกค่าสำหรับแต่ละ key ของ dictionary สุดท้ายใช้ฟังก์ชัน map เพื่อกลับมาเป็นลิสต์ที่มีค่าที่บวกแล้ว

ตัวอย่าง

List = [(3, 19), (7, 31), (7, 50), (1, 25.5), (1, 12)]
# แปลงเป็น dictionary
tup = {i: 0 for i, v in List}
for key, value in List:
    tup[key] = tup[key] + value
# ใช้ map
result = list(map(tuple, tup.items()))
print(result)

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:

ผลลัพธ์

[(3, 19), (7, 81), (1, 37.5)]

ใช้ Collections

ที่นี่เราใช้แนวทางคล้ายกันแต่ใช้เมธอด defaultdict ของโมดูล collections ตอนแทนที่จะใช้ map เราเข้าถึงรายการของ dictionary และแปลงเป็นลิสต์

ตัวอย่าง

from collections import defaultdict
# list of tuple
List = [(3, 19), (7, 31), (7, 50), (1, 25.5), (1, 12)]
dict = defaultdict(int)
for key, value in List:
    dict[key] = dict[key] + value
# พิมพ์ผลลัพธ์
print(list(dict.items()))

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้

ผลลัพธ์

[(3, 19), (7, 81), (1, 37.5)]

สรุป: defaultdict จาก collections ทำให้โค้ดสะอาดและอ่านง่ายกว่า การใช้ dictionary ธรรมดาต้อง init ค่าเริ่มต้นก่อน