본문 바로가기
python

코드 짜는데 도움되는 파이썬 사전 기능 8가지

by devcloset 2022. 10. 6.
반응형

피토닉 방식으로 사전 취급

 

 

모든 파이썬 개발자들은 거의 매일 사전을 운영해야 한다.

 

보통 간단한 일을 하기 위해 긴 기능을 써야 하기 때문에 초보자들은 이 부분을 싫어할 수 있다.

 

나는 지난달부터 파이썬을 배우기 시작한 내 여자친구가 두 개의 사전을 병합하기 위해 루프를 위해 중첩된 글을 쓰는 것을 보았다.

 

 

 

내가 그녀에게 말한 것은:

 

이 기사에서는 선임 파이썬 엔지니어가 사용하는 딕트 조작 트릭을 소개한다. 바라건대, 여러분이 읽은 후에 새로운 아이디어를 얻을 수 있기를 바랍니다. 

 

1. 연합 연산자를 사용하여 사전 병합

물론 다른 사전의 요소를 결합하기 위해 루프를 작성할 수 있습니다.

 

하지만 파이썬 3.9 이후로는 수동으로 할 필요가 없습니다.

 

 

 

연합 작업을 사용하는 것이 사전을 병합하는 가장 간단한 방법입니다.

 

cities_us = {'New York City': 'US', 'Los Angeles': 'US'}
cities_uk = {'London': 'UK', 'Birmingham': 'UK'}

cities = cities_us|cities_uk
print(cities)
# {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}

 

=를 사용하여 인플레이스 업데이트를 할 수도 있습니다.

 

cities_us = {'New York City': 'US', 'Los Angeles': 'US'}
cities_uk = {'London': 'UK', 'Birmingham': 'UK'}

cities_us |= cities_uk
print(cities_us)
# {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}

 

2. 별표로 사전 포장 풀기

 

 

간단하기 때문에 가능하면 항상 유니온 오퍼레이터를 이용하겠습니다.

 

그러나 불가피하게 귀사에서 이전 버전의 파이썬으로 만든 프로젝트도 있습니다. 당신은 그들을 위해 많은 코드를 쓸 필요가 있나요?

 

아니요, 사전 포장 풀기 트릭을 대신 사용할 수 있습니다.

 

cities_1 = {'New York City': 'US', 'Los Angeles': 'US'}
cities_2 = {'London': 'UK', 'Birmingham': 'UK'}

cities = {**cities_1, **cities_2}
print(cities)
# {'New York City': 'US', 'Los Angeles': 'US', 'London': 'UK', 'Birmingham': 'UK'}

 

위와 같이 두 개의 별표를 사용하여 파이썬 사전을 쉽게 풀고 병합할 수 있습니다.

 

 

 

3. 사전을 만들기 위해 사전 이해력을 사용

파이썬의 목록 이해와 마찬가지로 사전을 만드는 놀라운 방법인 딕트 이해는 if 문을 포함할 수 있기 때문에 데이터를 필터링할 수 있는 유연성을 제공한다. 딕트 이해의 템플릿은 다음과 같습니다.

 

다음 예제에서는 dict comparation의 힘을 활용하여 코드 한 줄에 있는 두 개의 목록에서 dict를 생성합니다.

 

cities = ['London', 'New York', 'Tokyo', 'Cambridge', 'Oxford']
countries = ['UK', 'US', 'Japan', 'UK', 'UK']
uk_cities = {city: country for city, country in zip(cities, countries) if country == 'UK'}
print(uk_cities)
# {'London': 'UK', 'Cambridge': 'UK', 'Oxford': 'UK'}

 

 

 

4. 사전의 키와 가치의 역전

딕트의 키와 값을 반전시키는 많은 한 줄짜리 방법이 있다.

 

다음은 제가 가장 좋아하는 세 가지 방법입니다.

 

cities = {'London': 'UK', 'Tokyo': 'Japan', 'New York': 'US'}
# Method 1
reversed_cities = {v: k for k, v in cities.items()}
print(reversed_cities)
# {'UK': 'London', 'Japan': 'Tokyo', 'US': 'New York'}

# Method 2
reversed_cities = dict(zip(cities.values(), cities.keys()))
print(reversed_cities)

# Method 3
reversed_cities = dict(map(reversed, cities.items()))
print(reversed_cities)

 

5. 목록을 사전으로 변환하기

 

 

이 목록은 일반적으로 사용되는 데이터 구조이기도 합니다. 어떤 경우에는 목록을 사전으로 변환해야 합니다.

 

목록에 "키" 및 "값"이 포함된 경우:

 

cities = [('London', 'UK'), ('New York', 'US'), ('Tokyo', 'Japan')]
d_cities = dict(cities)
print(d_cities)
# {'London': 'UK', 'New York': 'US', 'Tokyo': 'Japan'}

 

그렇지 않은 경우:

 

cities = ['London', 'Leeds', 'Birmingham']
d_cities = dict.fromkeys(cities,'UK') # set the default value to 'UK' 
print(d_cities)
# {'London': 'UK', 'Leeds': 'UK', 'Birmingham': 'UK'}

 

 

 

6. 사전 정렬

원하는 대로 목록을 정렬하려면 한 줄의 코드만 필요합니다.

 

cities = {'London': '2', 'Tokyo': '3', 'New York': '1'}
print(sorted(cities.items(),key=lambda d:d[1]))
# [('New York', '1'), ('London', '2'), ('Tokyo', '3')]

 

7. 기본 딕트 사용

존재하지 않는 키로 딕트 값을 가져오면 예외가 발생합니다.

 

 

 

예기치 않은 문제를 방지하려면 기본 딕트를 사용하는 것이 좋습니다.

 

위에서 보듯이 기본 딕트()의 도움을 받아 존재하지 않는 키가 필요한 경우에도 예외를 피할 수 있습니다.

 

8. 카운터 사용

 

 

각 문자가 문자열에서 몇 번 사용되는지 궁금하다면, 가장 직관적인 방법으로 for 루프를 작성하여 모든 문자를 통과하고 숫자를 계산할 수 있습니다.

 

그러나 Counter를 알고 있다면 위의 작업은 다음 코드만큼 간단합니다.

 

from collections import Counter

author = "Yang Zhou"
chars = Counter(author)
print(chars)
# Counter({'Y': 1, 'a': 1, 'n': 1, 'g': 1, ' ': 1, 'Z': 1, 'h': 1, 'o': 1, 'u': 1})

 

이름에서 알 수 있듯이 Counter 객체는 계산 부분을 수행하고 결과를 사전으로 저장합니다. 유사한 사용 시나리오에서 이 특수 명령을 기억할 수 있다면 코드 작성 시간을 크게 절약할 수 있습니다.

 

결론

 

 

파이썬을 배운다는 것은 올바른 결과를 반환하는 프로그램을 작성할 수 있다는 것을 의미한다.

 

파이썬을 마스터한다는 것은 우아하고 깔끔하며 파이썬적인 방법으로 같은 프로그램을 작성할 수 있다는 것을 의미한다.

 

파이썬을 오래 사용할수록 더 좋아하게 될 것이다. 

 

읽어주셔서 감사합니다. 마음에 드신다면 팔로우하시거나 미디엄 회원이 되셔서 더 좋은 기사들을 즐겨주세요. ️