반응형
30 seconds of code에서 python 함수들을 하나씩 공부할 것.
group_by()
def group_by(lst, fn):
return {key : [el for el in lst if fn(el) == key] for key in map(fn, lst)}
함수는 리스트와 함수를 파라미터로 받는다.
해당 List를 Dictionary로 그룹화시키는 함수
[el for el in lst if fn(el) == key]
리스트를 생성하는데, 각 요소가 fn함수를 적용했을 때 key와 동일한 경우에 넣는다.
{key : [el for el in lst if fn(el) == key] for key in map(fn, lst)}
아까 생성한 리스트를 value로 key와 함께 딕셔너리를 생성한다.
* map() : map() 함수는 내장함수로, list나 dictionary와 같은 집합형 데이터를 인자로 받아, 개별 item을 함수의 인자로 전달하여 결과를 list 형태로 반환해주는 함수.
* 딕셔너리 내부 for문
{key : value for x in y} 의 형태
위의 코드는 map(fn, lst)를 통해 fn이 적용된 list를 생성하고,
item을 key로 받아서 딕셔너리를 생성한다.
key는 key를 받고, value는 list의 형태로 조건에 맞는 값을 반환한다.
출처 : 30secondsofcode.org "https://www.30secondsofcode.org/python/s/group-by"
'Python' 카테고리의 다른 글
Django User 모델 정리 (0) | 2021.03.17 |
---|---|
2020. 08. 26 python (0) | 2020.08.26 |
2020. 08. 25 python (0) | 2020.08.25 |