Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 이진 요소 목록 그룹화

<시간/>

각 하위 목록에 두 개의 요소가 있는 목록 목록이 있다고 가정합니다. 각 하위 목록의 한 요소는 목록의 다른 많은 주제에서 공통입니다. 공통 요소별로 그룹화된 하위 목록을 표시할 최종 목록을 만들어야 합니다.

세트 및 지도 포함

주어진 목록에서 첫 번째 요소는 문자열이고 두 번째 요소는 숫자입니다. 그래서 우리는 각 하위 목록의 두 번째 요소를 보유할 임시 목록을 만듭니다. 그런 다음 임시 목록의 각 요소와 하위 목록을 비교하고 디자이너가 따라 그룹화합니다.

예시

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']})