딕셔너리의 value끼리 나누는 방법
조회수 879회
예를 들어
a = {'사과': 12, '바나나': 20}
b = {'사과': 3, '바나나': 6}
이 두개의 딕셔너리끼리 나눠서
{'사과': 4, '바나나': 3.33333}
이렇게 나오게 하는 법은 없는 건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
~~~게 하는 법은 없는 건가요ㅜㅜ
없어요. 질문자님이 만들어 내셔야 합니다.
이렇게 말씀드리면 더 울고 싶어지실 거 같은데 겁낼 거 하나 없습니다. 모든 프로그래밍 문제는 결국 입력을 받아 정해진 규칙으로 가공하고 (필요 시) 출력을 제공하는 작업입니다. 그렇다면 이 문제 역시 입력, 규칙, 출력만 확실히 하면 될 문제입니다.
이 문제의 입력, 규칙, 출력을 생각해 봅시다.
- 입력: 2개의 딕셔너리
- 규칙: 두 딕셔너리의 키가 같은 것들을 찾아서, 어쩌구 저쩌구... 해서 얻은 값을 다른 제3의 딕셔너리의 키의 값으로 만든다.
- 출력: 아까 그 제3의 딕셔너리
이 입력, 규칙, 출력을 코드로 적으세요.
def get_division_of_matching_values(dicA, dicB) : # 제3의 딕셔너리 dicC = {} # 규칙에 따라 제3의 딕셔너리에 뭔가 한다. for k in dicA : if dicB에 k 키가 있으면 : v = dicB의 k의 값으로 dicA의 k의 값을 나누기 dicC의 k 값에 v를 할당하기 # 출력한다. return dicC
이걸 침착하게 이해하고 해내면 될 문제입니다. 울 필요 없습니다.
-
pandas Series를 이용한 방법을 참고로 달아봅니다.
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> a = {'사과': 12, '바나나': 20} >>> b = {'사과': 3, '바나나': 6} >>> import pandas as pd >>> pd.Series(a) 사과 12 바나나 20 dtype: int64 >>> s_a = pd.Series(a) >>> s_b = pd.Series(b) >>> s_a 사과 12 바나나 20 dtype: int64 >>> s_b 사과 3 바나나 6 dtype: int64 >>> s_a/s_b 사과 4.000000 바나나 3.333333 dtype: float64 >>> s_c = s_a/s_b >>> s_c 사과 4.000000 바나나 3.333333 dtype: float64 >>> s_c.to_dict() {'사과': 4.0, '바나나': 3.3333333333333335}
댓글 입력