각 하위 목록에 두 개의 요소가 있는 목록 목록이 있다고 가정합니다. 각 하위 목록의 한 요소는 목록의 다른 많은 주제에서 공통입니다. 공통 요소별로 그룹화된 하위 목록을 표시할 최종 목록을 만들어야 합니다.
세트 및 지도 포함
주어진 목록에서 첫 번째 요소는 문자열이고 두 번째 요소는 숫자입니다. 그래서 우리는 각 하위 목록의 두 번째 요소를 보유할 임시 목록을 만듭니다. 그런 다음 임시 목록의 각 요소와 하위 목록을 비교하고 디자이너가 따라 그룹화합니다.
예시
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 함수의 결과를 기반으로 group by function이 적용됩니다.
예시
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']})