피토닉 방식으로 사전 취급
모든 파이썬 개발자들은 거의 매일 사전을 운영해야 한다.
보통 간단한 일을 하기 위해 긴 기능을 써야 하기 때문에 초보자들은 이 부분을 싫어할 수 있다.
나는 지난달부터 파이썬을 배우기 시작한 내 여자친구가 두 개의 사전을 병합하기 위해 루프를 위해 중첩된 글을 쓰는 것을 보았다.
내가 그녀에게 말한 것은:
이 기사에서는 선임 파이썬 엔지니어가 사용하는 딕트 조작 트릭을 소개한다. 바라건대, 여러분이 읽은 후에 새로운 아이디어를 얻을 수 있기를 바랍니다.
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 객체는 계산 부분을 수행하고 결과를 사전으로 저장합니다. 유사한 사용 시나리오에서 이 특수 명령을 기억할 수 있다면 코드 작성 시간을 크게 절약할 수 있습니다.
결론
파이썬을 배운다는 것은 올바른 결과를 반환하는 프로그램을 작성할 수 있다는 것을 의미한다.
파이썬을 마스터한다는 것은 우아하고 깔끔하며 파이썬적인 방법으로 같은 프로그램을 작성할 수 있다는 것을 의미한다.
파이썬을 오래 사용할수록 더 좋아하게 될 것이다.
읽어주셔서 감사합니다. 마음에 드신다면 팔로우하시거나 미디엄 회원이 되셔서 더 좋은 기사들을 즐겨주세요. ️
'python' 카테고리의 다른 글
파이썬 개발 경험을 훨씬 쉽게 할 수있는 PIP 패키지 트릭 (0) | 2022.10.06 |
---|---|
데이터 분석가가 알아야하는 SQL 핵심 개념 9가지 (0) | 2022.10.06 |
로컬로 Pyspark 설정, Pyspark로 첫 번째 ETL 파이프 라인을 구축하십시오. (0) | 2022.10.06 |