สมมติว่าเรามีรายการของรายการที่แต่ละรายการย่อยมีสององค์ประกอบ องค์ประกอบหนึ่งของแต่ละรายการย่อยเป็นเรื่องธรรมดาในหัวข้ออื่นๆ ในรายการ เราจำเป็นต้องสร้างรายการสุดท้ายซึ่งจะแสดงรายการย่อยที่จัดกลุ่มตามองค์ประกอบทั่วไป
พร้อมฉากและแผนที่
ในรายการที่กำหนด องค์ประกอบแรกคือสตริง และองค์ประกอบที่สองคือตัวเลข ดังนั้นเราจึงสร้างรายการชั่วคราวซึ่งจะเก็บองค์ประกอบที่สองของแต่ละรายการย่อย จากนั้นเราเปรียบเทียบเป็นรายการย่อยกับองค์ประกอบแต่ละรายการในรายการชั่วคราวและนักออกแบบติดตามเพื่อจัดกลุ่ม
ตัวอย่าง
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3], ["Thu", 1], ['Fri', 2], ['Sat', 3], ['Sun', 1]] # With set and map temp = set(map(lambda i: i[1], listA)) res = [[j[0] for j in listA if j[1] == i] for i in temp] # Result print("The list with grouped elements is : \n" ,res)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The list with grouped elements is : [['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]
ด้วย groupby และ itemgetter
ฟังก์ชัน itemgetter ใช้เพื่อรับองค์ประกอบที่สองของแต่ละรายการย่อย จากนั้นระบบจะใช้กลุ่มตามฟังก์ชันตามผลลัพธ์จากฟังก์ชัน itemgetter
ตัวอย่าง
from itertools import groupby from operator import itemgetter listA = [['Mon', 2], ['Tue', 3], ['Wed', 3],["Thu", 1], ['Fri', 2], ['Sat', 3],['Sun', 1]] # With groupby listA.sort(key = itemgetter(1)) groups = groupby(listA, itemgetter(1)) res = [[i[0] for i in val] for (key, val) in groups] # Result print("The list with grouped elements is : \n" ,res)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The list with grouped elements is : [['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]
ด้วย defaultdict
เราใช้ฟังก์ชัน defaultdict เพื่อรับองค์ประกอบที่สองของรายการย่อยเป็นคีย์ของพจนานุกรม จากนั้นในรายการผลลัพธ์ เราผนวกค่าจากองค์ประกอบแรกของรายการย่อย
ตัวอย่าง
import collections listA = [['Mon', 2], ['Tue', 3], ['Wed', 3],["Thu", 1], ['Fri', 2], ['Sat', 3],['Sun', 1]] # With defaultdict res = collections.defaultdict(list) for val in listA: res[val[1]].append(val[0]) # Result print("The list with grouped elements is : \n" ,res)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
The list with grouped elements is : defaultdict(<class 'list'>, {2: ['Mon', 'Fri'], 3: ['Tue', 'Wed', 'Sat'], 1: ['Thu', 'Sun']})