[PythonBasic] Looping Dictionary

Alex of the year 2020 & 2021·2020년 6월 29일
0

Python

목록 보기
9/18
post-thumbnail

자 다음 문제는

이 문제 같은 경우는 첫 발을 떼지를 못하고 있었다
Dictionary의 특성을 너무 이해를 못하고 있으니, 아예 진행 자체가 안됐다

Dictionary

1) key값으로 loop 돌기

dictionary는 key와 value로 이루어져 있는 데이터 형태
그리고 이런 dictionary를 사용한 반복구문은 각 요소의 key만 리턴을 한다. 이후에, 해당 key로 value를 읽어들이는 구조인 것.

예를 들면 이런식으로 자료 값을 읽어들이는 것 같다

bts_rm = {"실명":"김남준", "가명":"RM", "태어난 년도":1991}

for each_key in bts_rm:
  print(f"{each_key}는/은 {bts_rm[each_key]} 입니다.")

이렇게 쓴 코드는

식으로 자료를 볼 수 있다


2) value값으로 loop 돌기 : .values() 함수 이용

bts_rm = {"실명":"김남준", "가명":"RM", "태어난 년도":1991}

for each_value in bts_rm.values():
  print(f"{each_value}는/은 bts멤버 RM의 정보입니다.")

이렇게 쓴 코드는

이런 식으로 자료를 볼 수 있다


3) key, value값으로 loop 돌기 : .items() 함수 이용

bts_rm = {"실명":"김남준", "가명":"RM", "태어난 년도":1991}

for each_key, each_value in bts_rm.items():
  print(f"{each_key}는/은 {each_value}입니다.")

이 경우는,

이런 식으로 자료를 볼 수 있다


그럼 이제
문제를 다시 보자

맨 처음 접근
1. set을 이용하여, 리턴되어야 하는 dictionary의 key값을 만들자 (중복 제거되므로)
2. 리턴되어야 하는 dictionary의 value값들은 .count() 함수를 사용해서 뽑아내어 ":"과 함께 붙이자

근데 역시 이번에도 set으로 접근하니 진짜 더럽게 안풀리는 것이었다
ㅠㅠ

어렵게 힌트를 얻었다
.get() 함수!

.get() 함수

  • 특정 키에 대한 값 리턴 : Dictionary[key] 와 비슷
  • 단, dictionary[key]의 방법이 해당 key가 없을 경우 에러를 리턴하는데 반해 get()은 해당 key가 없을 경우 None을 리턴하여 더 유용!
  • 🍎 Dictionary(key, a) : key에 해당하는 값을 리턴하되, 그 값이 없다면 a를 리턴

이 get함수를 이용해 내가 짠 코드는 다음과 같다

def get_occurrence_count(my_list):
  my_dict = {} # 우선 빈 딕셔너리를 하나 선언
  
  for ele in my_list: # 주어진 리스트를 포룹으로 돌며
    if my_dict.get(ele, 0) == 0: # 만일 my_dict에 포룹을 돌며 걸리는 요소(ele)가 없으면 0을 반환하는데, 그 반환값이 0일 때
      my_dict[ele] = 1 # my_dict[ele]은 1을 value값으로 가짐
      
    else: # 하지만 만일 주어진 리스트를 포룹으로 돌며, 만일 my_dict에 ele가 이미 존재한다면,
      my_dict[ele] += 1 # my_dict[ele]는 기존의 value 값에서 1을 더해주자
    
  return my_dict # 그리고 마지막으로 딕셔너리 전체를 리턴


위코드의 훌륭한 동료인 고노상이 힌트를 제공해 주었는데도 조금 오래 걸렸다.
이 문제 하나 생각해내는데 4시간이 걸렸다.. 😂
(이전문제부터 set에 내가 너무 집착하는 것 같다 ㅋㅋㅋㅋㅋㅋ)

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글