เมื่อจำเป็นต้องอัปเดตรายการ tuple โดยใช้รายการอื่น สามารถใช้ 'defaultdict' ได้
Defaultdict เป็นคอนเทนเนอร์ที่คล้ายกับพจนานุกรมซึ่งมีอยู่ในโมดูล 'คอลเลกชัน' เป็นคลาสย่อยของคลาส 'dict' มันส่งกลับวัตถุเหมือนพจนานุกรม 'defaultdict' ไม่ได้เพิ่ม KeyError เลย โดยจะให้ค่าเริ่มต้นสำหรับคีย์ที่ไม่มีอยู่
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
ตัวอย่าง
from collections import defaultdict def merge_vals(list_1, list_2): my_dict = defaultdict(list) for i, j in list_1 + list_2: my_dict[i].append(j) return sorted([(i, max(j)) for i, j in my_dict.items()], key = lambda x:x[0]) my_list_1 = [('v', 1), ('q', 2), ('o', 0)] my_list_2 = [('q', 5), ('o', 3)] print("The first list of tuple is : ") print(my_list_1) print("The second list of tuple is : ") print(my_list_2) print("After merging, it becomes : ") print(merge_vals(my_list_1, my_list_2))
ผลลัพธ์
The first list of tuple is : [('v', 1), ('q', 2), ('o', 0)] The second list of tuple is : [('q', 5), ('o', 3)] After merging, it becomes : [('o', 3), ('q', 5), ('v', 1)]
คำอธิบาย
- นำเข้าไลบรารีที่จำเป็น
- มีการกำหนดวิธีการชื่อ 'merge_vals' ซึ่งรับสองรายการเป็นอาร์กิวเมนต์ มีการสร้าง defaultdict
- องค์ประกอบในรายการมีการทำซ้ำ และองค์ประกอบของรายการแรกจะถูกนำมาเป็นดัชนี และองค์ประกอบจากดัชนีที่สองจะถูกผนวกเข้ากับพจนานุกรม
- พจนานุกรมนี้ถูกจัดเรียงและส่งคืน
- รายการทูเพิลสองรายการถูกสร้างขึ้น และแสดงบนคอนโซล
- เมธอด 'merge_vals' ถูกเรียกโดยส่งรายการทูเพิลสองรายการนี้เป็นพารามิเตอร์
- สิ่งนี้จะแสดงบนคอนโซลเป็นเอาต์พุต