자 다음 문제는
이 문제 같은 경우는 첫 발을 떼지를 못하고 있었다
Dictionary의 특성을 너무 이해를 못하고 있으니, 아예 진행 자체가 안됐다
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]} 입니다.")
이렇게 쓴 코드는
식으로 자료를 볼 수 있다
.values()
함수 이용bts_rm = {"실명":"김남준", "가명":"RM", "태어난 년도":1991}
for each_value in bts_rm.values():
print(f"{each_value}는/은 bts멤버 RM의 정보입니다.")
이렇게 쓴 코드는
이런 식으로 자료를 볼 수 있다
.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에 내가 너무 집착하는 것 같다 ㅋㅋㅋㅋㅋㅋ)