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

Python - รับผลรวมของ tuples ที่มีค่าแรกเท่ากัน


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

การใช้ map และ for loop

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

ตัวอย่าง

List = [(3,19),(7, 31), (7, 50), (1, 25.5), (1, 12)]
# Converting it to a dictionary
tup = {i:0 for i, v in List}
for key, value in List:
   tup[key] = tup[key]+value
# using map
result = list(map(tuple, tup.items()))
print(result)

การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:

ผลลัพธ์

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

การใช้คอลเลกชัน

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

ตัวอย่าง

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
# Printing output
print(list(dict.items()))

การรันโค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

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