Today I Learn (TIL)

#18 Python list comprehension, dictionary comprehension

이웃집 친구 2020. 6. 29. 11:58
반응형

List comprehension은 for 반복문을 활용하여 list를 짧고, 빠르게 만들 수 있는 comprehension이다.

[ 표현식 for 원소 in 반복 가능한 객체 ]

[ 표현식 for 원소 in 반복 가능한 객체 if문 ]

cities = ["Tokyo","Shanghai","Jakarta","Seoul","Guangzhou","Beijing","Karachi","Shenzhen","Delhi"]
# 일반적인 for loop
new_cities = []
for i in cities:
    if "S" not in i:
        new_cities.append(i)

print(new_cities)

# list comprehension
n_l = [x for x in cities if "S" not in x]
print(n_l)

 

 

위에서 알 수 있듯이, 새로운 리스트를 만들고 for loop을 이용하여 S가 들어있지 않는 도시를 new_cities리스트에 넣는 방식을 똑같은 결과 값을 list comprehension을 이용하면 1줄에 가능하다.

 

Dictionary comprehension

 

[ 표현식 for 원소 in 반복 가능한 객체 ]

여기서 <표현식> 부분에 dictionary 형태의 'key: value'를 입력하면 dictionary comprehension을 표현할 수 있다.

역시나 짧고, 빠른 구동 시간으로 말이다.

#dictionary comprehension
population_of_city = [('Tokyo', 36923000), ('Shanghai', 34000000),
                      ('Jakarta', 30000000), ('Seoul', 25514000),
                      ('Guangzhou', 25000000), ('Beijing', 24900000),
                      ('Karachi', 24300000 ), ( 'Shenzhen', 23300000),
                      ('Delhi', 21753486) ]

dict1 = {t[1]: t[0] for t in population_of_city}

print(dict1)

:출력
{36923000: 'Tokyo', 34000000: 'Shanghai', 30000000: 'Jakarta', 
25514000: 'Seoul', 25000000: 'Guangzhou', 24900000: 'Beijing', 
24300000: 'Karachi', 23300000: 'Shenzhen', 21753486: 'Delhi'}

 

key값으론 인구수, value값으로 도시명이 들어가있는 dictionary가 만들어졌다.

 

population_of_city는 튜플로 이루어져 있는 리스트이기 때문에, 튜플에 접근하고 활용하기 위하여

t [1]: t [0]으로 표현하였다.