Python

2020. 08. 24 python

씬프 2020. 8. 24. 09:15
반응형

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