반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 로지스틱회귀
- Seaborn
- sql연습문제
- 경사하강법
- 런던
- for반복문
- 파이썬
- numpy
- 판다스
- matplotlib
- 영국석사
- 코드잇
- 행렬
- 코딩독학
- 코드잇 TIL
- 오늘도코드잇
- 유학생
- 다항회귀
- 코딩
- CSS
- 결정트리
- SQL
- 코드잇TIL
- 윈도우함수
- 머신러닝
- 선형회귀
- 코딩공부
- HTML
- 나혼자코딩
- 데이터분석
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(파이썬) for 반복문과 get 메소드로 딕셔너리(dictionary) 만들기, items로 키와 값 쌍 얻기 본문
코딩공부/Python
(파이썬) for 반복문과 get 메소드로 딕셔너리(dictionary) 만들기, items로 키와 값 쌍 얻기
life-of-nomad 2024. 6. 8. 11:58728x90
반응형
지난 글에서 for 반복문에 대한 개념과 간단한 문제에 대해 알아보았습니다. 이번 글에서는 for 반복문과 get 메소드 이용해서 딕셔너리를 만드는 방법에 대해 알아보겠습니다.
🔻(참고) for 반복문🔻
🔻(참고) 딕셔너리 get 메소드🔻
1. 딕셔너리 만들기
- 문자열에 있는 각 단어의 총 개수를 추적하는 word_counter 라는 딕셔너리를 두 가지 방법으로 만들어보겠습니다.
방법1) for 반복문을 사용
- 먼저, 단어가 담긴 리스트부터 시작해보겠습니다.
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
- 그 다음, 빈 딕셔너리를 만듭니다.
word_counter = {}
- 리스트의 각 요소를 반복합니다. 요소가 이미 딕셔너리에 포함되어 있다면 그 값에 1을 더하고, 아니면 요소를 딕셔너리에 추가하고 값을 1에 설정합니다.
for word in book_title:
if word not in word_counter:
word_counter[word] = 1
else: word_counter[word] += 1
- for 반복문은 리스트의 모든 요소를 반환합니다. 첫 번째 반복시 word 는 great라는 값을 취합니다.
- 다음으로 if 문은 word_counter 딕셔너리에 있는지 검사합니다. 아직 없기 때문에 구문 word_counter[word] = 1 은 great를 키로 하고 값을 1로 하는 딕셔너리에 추가됩니다.
- 다음으로 for 반복문으로 반복해서 진행합니다.
- if 조건이 충족되지 않으면 그 이유는 word가 이미 word_counter 딕셔너리에 있기 때문이고, 구문 word_counter[word] = word_counter[word] + 1 은 그 워드의 개수를 1만큼 증가시킵니다.
- for 반복문이 리스트를 완전히 반복하면 for 반복문이 종료됩니다.
- 위 코드를 출력하면 다음과 같습니다.
{'great': 2, 'expectations': 1, 'the': 2, 'adventures': 2, 'of': 2, 'sherlock': 1, 'holmes': 1, 'gasby': 1, 'hamlet': 1, 'huckleberry': 1, 'fin': 1}
방법2) get 메소드 사용하기
- 위와 동일한 리스트를 사용하겠습니다.
book_title = ['great', 'expectations','the', 'adventures', 'of', 'sherlock','holmes','the','great','gasby','hamlet','adventures','of','huckleberry','fin']
- 빈 딕셔너리를 만듭니다.
word_counter = {}
- 딕셔너리 get 메소드로도 딕셔너리에 있는 키의 값을 받을 수 있습니다.
- 단, 인덱싱과는 달리, 이 메소드를 쓰면 키가 없을 때 기본값이 리턴됩니다.
- 지정되지 않은 경우 이 기본값은 None 입니다. 여기서는 기본값 0을 사용하겠습니다.
- 아래의 코드처럼 각 요소를 반복하고 딕셔너리에 있는 값을 get()한 다음 1을 더합니다.
# 'word_counter.get(word, 0)'는 'word'가 딕셔너리에 있으면 해당 값을, 없으면 0을 반환합니다.
# 반환된 값에 1을 더해 'word'의 새로운 빈도로 설정합니다.
for word in book_title:
word_counter[word] = word_counter.get(word, 0) + 1
- for 반복문은 바디에서 그 다음 구문에 great를 줍니다.
- 그 밑에 줄에서 키 'great'는 아직 딕셔너리에 없기 때문에 get(word,0)은 값 0을 리턴하고 거기에 1을 더한 word_counter[word]는 1로 설정될 것입니다.
- 만약, word_counter에 이미 존재하는 단어를 만나면 word_counter.get(word, 0)의 그 키에 해당하는 값을 반환하고, 반환된 값에 1을 더합니다.
- the가 두 번째 나온 경우 키의 값은 다시 1이 추가되어 2가 됩니다.
- for 반복문이 리스트를 완전히 반복하면 for 반복문이 종료됩니다.
- 코드를 출력하면 방법1과 같은 결과가 나옵니다.
{'great': 2, 'expectations': 1, 'the': 2, 'adventures': 2, 'of': 2, 'sherlock': 1, 'holmes': 1, 'gasby': 1, 'hamlet': 1, 'huckleberry': 1, 'fin': 1}
2. for 반복문으로 딕셔너리 반복하기
- for 반복문을 사용하여 딕셔너리를 반복할 경우, 딕셔너리의 키(key)에만 액세스할 수 있게 됩니다.
- 하지만 딕셔너리에 있는 키와 값을 모두 반복하는 방법도 있습니다.
- 아래의 예시에서 배우 이름을 키(key)로 하고 캐릭터를 값(value)로 사용하는 딕셔너리가 있다고 가정해보겠습니다.
cast = {
"Jerry Seinfeld": "Jerry Seinfeld",
"Julia Louis-Dreyfus": "Elaine Benes",
"Jason Alexander": "George Costanza",
"Michael Richards": "Cosmo Kramer"
}
- for 반복문을 사용하여 반복하면 키만 출력됩니다.
for key in cast:
print(key)
>>> Jerry Seinfeld
Julia Louis-Dreyfus
Jason Alexander
Michael Richards
- 키와 값을 모두 반복하고 싶으면 다음과 같이 내장 메소드인 items를 사용할 수 있습니다.
for key, value in cast.items():
print("Actor: {} Role: {}".format(key, value))
>>> Actor: Jerry Seinfeld Role: Jerry Seinfeld
Actor: Julia Louis-Dreyfus Role: Elaine Benes
Actor: Jason Alexander Role: George Costanza
Actor: Michael Richards Role: Cosmo Kramer
- 이와 같이 items는 키, 값 쌍들로 된 튜플을 리턴하는 유용한 메소드입니다.
- 또 다른 예시로, basket_itmes 에 fruits 가 몇개 있는지 확인하는 반복문을 만들어보겠습니다.
result = 0
basket_items = {'pears': 5, 'grapes': 19, 'kites': 3, 'sandwiches': 8, 'bananas': 4}
fruits = ['apples', 'oranges', 'pears', 'peaches', 'grapes', 'bananas']
for object, count in basket_items.items():
if object in fruits:
result += count
print("They are {} fruits in the basket.".format(result))
>>> They are 28 fruits in the basket.
- 과일이 아닌것들도 count 해보겠습니다.
fruit_count, not_fruit_count = 0, 0
basket_items = {'apples': 4, 'oranges': 19, 'kites': 3, 'sandwiches': 8}
fruits = ['apples', 'oranges', 'pears', 'peaches', 'grapes', 'bananas']
for object, count in basket_items.items():
if object in fruits:
fruit_count += count
else:
not_fruit_count += count
print("The number of fruits is {}. There are {} objects that are not fruits.".format(fruit_count, not_fruit_count))
728x90
반응형
'코딩공부 > Python' 카테고리의 다른 글
(파이썬) for 반복문과 while 반복문에서 break 와 continue 사용하기 (1) | 2024.06.10 |
---|---|
(파이썬) while 반복문 개념 및 예시, for 반복문과 차이점 (0) | 2024.06.10 |
(파이썬) for 반복문, range 함수, for 반복문 이용해서 리스트 변경하기 (0) | 2024.06.08 |
(파이썬) 조건문 if, elif, else 문 (0) | 2024.06.07 |
(파이썬) 딕셔너리(dictionary)와 동일성 연산자 is, is not, get 메소드 복합 데이터 구조 알아보기 (0) | 2024.06.05 |